ฟังก์ชันจัดการลิงค์ลิสต์แบบทางเดียว
Advance Computer Programming
รหัสวิชา 32090207
อ. กิตตินันท์ น้1อยมณี 1
เนื้อหา
1. Single Linked List Structure
2. AddNode
3. InsertNode
4. DeleteNode
อ. กิตตินันท์ น้1อยมณี 2
Single Linked List Structure
อ. กิตตินันท์ น้3อยมณี 3
Single Linked List Structure
• จากบทที่แล้ว เราได้เคยเห็น Linked List กันแล้วครั้งนึง
อ. กิตตินันท์ น้1อยมณี 4
 one  two  three  four 


now1
now2
start data next data next data next data next
Single Linked List Structure
• คราวนี้ลองเปลี่ยนหน้าตาดูใหม่
อ. กิตตินันท์ น้1อยมณี 5
 one  two  three  four 


now
walk
start data next data next data next data next
Single Linked List Structure
• Linked List มีจุดเริ่มต้นอยู่ที่โหนด Start
• มีโหนดปัจจุบัน (Now) เป็น Pointer 1 ระดับ
อ. กิตตินันท์ น้1อยมณี 6
AddNode
อ. กิตตินันท์ น้7อยมณี 7
AddNode
• การ AddNode คือการเพิ่มโหนดใหม่ต่อท้าย Linked List
• โหนด Now ต้องชี้ไปยังโหนดใหม่ที่ต่อท้าย Linked List
อ. กิตตินันท์ น้1อยมณี 8
AddNode
• Step 1: ให้ walk ไล่ไปหาโหนดสุดท้ายให้เจอ
อ. กิตตินันท์ น้1อยมณี 9
 one  two  three 


now
walk
start data next data next data next
AddNode
• Step 1: ให้ walk ไล่ไปหาโหนดสุดท้ายให้เจอ
อ. กิตตินันท์ น้1อยมณี 10
 one  two  three 


now
walk
start data next data next data next
AddNode
• Step 1: ให้ walk ไล่ไปหาโหนดสุดท้ายให้เจอ
อ. กิตตินันท์ น้1อยมณี 11
 one  two  three 


now
walk
start data next data next data next
AddNode
• Step 1: ให้ walk ไล่ไปหาโหนดสุดท้ายให้เจอ
อ. กิตตินันท์ น้1อยมณี 12
 one  two  three 


now
walk
start data next data next data next
1
AddNode
• Step 2: สร้างโหนดใหม่พร้อมกับชี้ไปที่โหนดใหม่
อ. กิตตินันท์ น้1อยมณี 13


now
walk
start data next data next data next
 one  two  three  four 
data next
AddNode
• Step 2: สร้างโหนดใหม่พร้อมกับชี้ไปที่โหนดใหม่
อ. กิตตินันท์ น้1อยมณี 14


now
walk
start data next data next data next
 one  two  three  four 
2
data next
AddNode
• Step 3: ให้โหนดสุดท้ายชี้ไปที่ NULL
อ. กิตตินันท์ น้1อยมณี 15


now
walk
start data next data next data next
 one  two  three  four 
3data next
AddNode
• Step 4: ให้โหนด now เปลี่ยนไปชี้ที่โหนดใหม่
อ. กิตตินันท์ น้1อยมณี 16


now
walk
start data next data next data next
 one  two  three  four 
4
data next
AddNode
• สรุปคือ
อ. กิตตินันท์ น้1อยมณี 17


now
walk
start data next data next data next
 one  two  three  four 
4
data next
1
2
3
AddNode
• จุดสังเกต
–walk เป็น Pointer 2 ระดับ
–ส่ง &start ให้แก่ walk
อ. กิตตินันท์ น้1อยมณี 18
InsertNode
อ. กิตตินันท์ น้19อยมณี 19
InsertNode
• การ Insert คือการแทรกโหนดใหม่ต่อจากโหนดปัจจุบัน
• ต่างกับแบบ AddNode ที่เป็นการสร้างโหนดใหม่ต่อท้าย
Linked List
อ. กิตตินันท์ น้1อยมณี 20
InsertNode
กรณีที่ walk เป็น Pointer 1 ระดับ
อ. กิตตินันท์ น้21อยมณี 21
InsertNode
• Step 1: สร้างโหนด Temp ขึ้นมาเพื่อเก็บโหนดเก่าเอาไว้ก่อน
อ. กิตตินันท์ น้1อยมณี 22
 one  two  three 


temp
walk
start data next data next data next
1
InsertNode
• Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย
อ. กิตตินันท์ น้1อยมณี 23
 one  two  three 


temp
walk
start data next data next data next
InsertNode
• Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย
อ. กิตตินันท์ น้1อยมณี 24


temp
walk
start data next data next
 one  two  three 
data next
InsertNode
• Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย
อ. กิตตินันท์ น้1อยมณี 25


temp
walk
start data next data next data next
 one  two  three  three 
data next
InsertNode
• Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย
อ. กิตตินันท์ น้1อยมณี 26


temp
walk
start data next data next data next
 one  two  three  three 
data next
2
InsertNode
• Step 3: ให้โหนดใหม่ชี้ไปที่ temp ได้เลย
อ. กิตตินันท์ น้1อยมณี 27


temp
walk
start data next data next data next
 one  two  three  three 
data next
3
InsertNode
• Step 3: ให้โหนดใหม่ชี้ไปที่ temp ได้เลย
อ. กิตตินันท์ น้1อยมณี 28


temp
walk
start data next data next data next
 one  two  three  three 
data next
32
1
InsertNode
• จุดสังเกต
–ส่ง now ให้ walk
–walk เป็น pointer 1 ระดับ
–แทรกแทนโหนดปัจจุบันไม่ได้
อ. กิตตินันท์ น้1อยมณี 29
InsertNode
กรณีที่ walk เป็น Pointer 2 ระดับ
อ. กิตตินันท์ น้30อยมณี 30
InsertNode
• Step 1: สร้างโหนด Temp ขึ้นมาเพื่อเก็บโหนดเก่าเอาไว้ก่อน
อ. กิตตินันท์ น้1อยมณี 31
 one  two  three 


temp
walk
start data next data next data next
1
InsertNode
• Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย
อ. กิตตินันท์ น้1อยมณี 32
 one  two  three 


temp
walk
start data next data next data next
InsertNode
• Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย
อ. กิตตินันท์ น้1อยมณี 33


temp
walk
start data next data next
 one  two  three 
data next
InsertNode
• Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย
อ. กิตตินันท์ น้1อยมณี 34


temp
walk
start data next data next data next
 one  two  three  three 
data next
InsertNode
• Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย
อ. กิตตินันท์ น้1อยมณี 35


temp
walk
start data next data next data next
 one  two  three  three 
data next
2
InsertNode
• Step 3: ให้โหนดใหม่ชี้ไปที่ temp ได้เลย
อ. กิตตินันท์ น้1อยมณี 36


temp
walk
start data next data next data next
 one  two  three  three 
data next
3
InsertNode
• Step 3: ให้โหนดใหม่ชี้ไปที่ temp ได้เลย
อ. กิตตินันท์ น้1อยมณี 37


temp
walk
start data next data next data next
 one  two  three  three 
data next
32
1
InsertNode
• จุดสังเกต
–walk เป็น Pointer 2 ระดับ
–ส่ง now ให้ walk
–สามารถแทรกโหนดใหม่แทนปัจจุบันได้
อ. กิตตินันท์ น้1อยมณี 38
DeleteNode
อ. กิตตินันท์ น้39อยมณี 39
DeleteNode
• การ Delete คือการลบโหนดที่อยู่จากโหนด now
อ. กิตตินันท์ น้1อยมณี 40
DeleteNode
กรณีที่ walk เป็น Pointer 1 ระดับ
อ. กิตตินันท์ น้41อยมณี 41
DeleteNode
• Step 1: สร้างโหนด Temp ขึ้นมาเพื่อเก็บโหนดเก่าเอาไว้ก่อน
อ. กิตตินันท์ น้1อยมณี 42
 one  two  three  four 

walk
start data next data next data next data next

temp1
DeleteNode
• Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย
อ. กิตตินันท์ น้1อยมณี 43
 one  two  three  four 

walk
start data next data next data next data next

temp
DeleteNode
• Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย
อ. กิตตินันท์ น้1อยมณี 44
 one  two  three  four 

walk
start data next data next data next data next

temp
2
DeleteNode
• Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย
อ. กิตตินันท์ น้1อยมณี 45
 one  two  three  four 

walk
start data next data next data next data next

temp
2
1
DeleteNode
• จุดสังเกต
–ส่ง now ให้ walk
–walk เป็น Pointer 1 ระดับ
–ลบโหนดปัจจุบันไม่ได้
อ. กิตตินันท์ น้1อยมณี 46
DeleteNode
กรณีที่ walk เป็น Pointer 2 ระดับ
อ. กิตตินันท์ น้47อยมณี 47
DeleteNode
• Step 1: สร้างโหนด Temp ขึ้นมาเพื่อเก็บโหนดเก่าเอาไว้ก่อน
อ. กิตตินันท์ น้1อยมณี 48
 one  two  three  four 

walk
start data next data next data next data next

temp1
DeleteNode
• Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย
อ. กิตตินันท์ น้1อยมณี 49
 one  two  three  four 

walk
start data next data next data next data next

temp
DeleteNode
• Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย
อ. กิตตินันท์ น้1อยมณี 50
 one  two  three  four 

walk
start data next data next data next data next

temp
2
DeleteNode
• Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย
อ. กิตตินันท์ น้1อยมณี 51
 one  two  three  four 

walk
start data next data next data next data next

temp
2
1
DeleteNode
• จุดสังเกต
–walk เป็น Pointer 2 ระดับ
–ส่ง now ให้ walk
–สามารถลบโหนดปัจจุบันได้
อ. กิตตินันท์ น้1อยมณี 52

More Related Content

PDF
(Big One) C Language - 04 เปลี่ยนตำแหน่งการชี้ของpointer
PDF
(Big One) C Language - 06 ฟังก์ชันจัดกาลิงค์ลิสต์แบบสองทาง
PDF
(Big One) C Language - 07 object linkedlist
PDF
(Big One) C Language - 03 ฟังก์ชันส่งผ่านสตรัค
PPT
ตัวแปรชนิดพอยเตอร์ (Pointer)
PDF
(Big One) C Language - 01 ฟังก์ชันส่งผ่านอาร์เรย์
PDF
(Big One) C Language - 02 ฟังก์ชันส่งผ่านสตริง
PDF
(Big One) C Language - 10 เทคนิคอัลกอริทึมแบบ divide-and-conquer
(Big One) C Language - 04 เปลี่ยนตำแหน่งการชี้ของpointer
(Big One) C Language - 06 ฟังก์ชันจัดกาลิงค์ลิสต์แบบสองทาง
(Big One) C Language - 07 object linkedlist
(Big One) C Language - 03 ฟังก์ชันส่งผ่านสตรัค
ตัวแปรชนิดพอยเตอร์ (Pointer)
(Big One) C Language - 01 ฟังก์ชันส่งผ่านอาร์เรย์
(Big One) C Language - 02 ฟังก์ชันส่งผ่านสตริง
(Big One) C Language - 10 เทคนิคอัลกอริทึมแบบ divide-and-conquer
Ad

(Big One) C Language - 05 ฟังก์ชันจัดกาลิงค์ลิสต์แบบทางเดียว

  • 2. เนื้อหา 1. Single Linked List Structure 2. AddNode 3. InsertNode 4. DeleteNode อ. กิตตินันท์ น้1อยมณี 2
  • 3. Single Linked List Structure อ. กิตตินันท์ น้3อยมณี 3
  • 4. Single Linked List Structure • จากบทที่แล้ว เราได้เคยเห็น Linked List กันแล้วครั้งนึง อ. กิตตินันท์ น้1อยมณี 4  one  two  three  four    now1 now2 start data next data next data next data next
  • 5. Single Linked List Structure • คราวนี้ลองเปลี่ยนหน้าตาดูใหม่ อ. กิตตินันท์ น้1อยมณี 5  one  two  three  four    now walk start data next data next data next data next
  • 6. Single Linked List Structure • Linked List มีจุดเริ่มต้นอยู่ที่โหนด Start • มีโหนดปัจจุบัน (Now) เป็น Pointer 1 ระดับ อ. กิตตินันท์ น้1อยมณี 6
  • 8. AddNode • การ AddNode คือการเพิ่มโหนดใหม่ต่อท้าย Linked List • โหนด Now ต้องชี้ไปยังโหนดใหม่ที่ต่อท้าย Linked List อ. กิตตินันท์ น้1อยมณี 8
  • 9. AddNode • Step 1: ให้ walk ไล่ไปหาโหนดสุดท้ายให้เจอ อ. กิตตินันท์ น้1อยมณี 9  one  two  three    now walk start data next data next data next
  • 10. AddNode • Step 1: ให้ walk ไล่ไปหาโหนดสุดท้ายให้เจอ อ. กิตตินันท์ น้1อยมณี 10  one  two  three    now walk start data next data next data next
  • 11. AddNode • Step 1: ให้ walk ไล่ไปหาโหนดสุดท้ายให้เจอ อ. กิตตินันท์ น้1อยมณี 11  one  two  three    now walk start data next data next data next
  • 12. AddNode • Step 1: ให้ walk ไล่ไปหาโหนดสุดท้ายให้เจอ อ. กิตตินันท์ น้1อยมณี 12  one  two  three    now walk start data next data next data next 1
  • 13. AddNode • Step 2: สร้างโหนดใหม่พร้อมกับชี้ไปที่โหนดใหม่ อ. กิตตินันท์ น้1อยมณี 13   now walk start data next data next data next  one  two  three  four  data next
  • 14. AddNode • Step 2: สร้างโหนดใหม่พร้อมกับชี้ไปที่โหนดใหม่ อ. กิตตินันท์ น้1อยมณี 14   now walk start data next data next data next  one  two  three  four  2 data next
  • 15. AddNode • Step 3: ให้โหนดสุดท้ายชี้ไปที่ NULL อ. กิตตินันท์ น้1อยมณี 15   now walk start data next data next data next  one  two  three  four  3data next
  • 16. AddNode • Step 4: ให้โหนด now เปลี่ยนไปชี้ที่โหนดใหม่ อ. กิตตินันท์ น้1อยมณี 16   now walk start data next data next data next  one  two  three  four  4 data next
  • 17. AddNode • สรุปคือ อ. กิตตินันท์ น้1อยมณี 17   now walk start data next data next data next  one  two  three  four  4 data next 1 2 3
  • 18. AddNode • จุดสังเกต –walk เป็น Pointer 2 ระดับ –ส่ง &start ให้แก่ walk อ. กิตตินันท์ น้1อยมณี 18
  • 20. InsertNode • การ Insert คือการแทรกโหนดใหม่ต่อจากโหนดปัจจุบัน • ต่างกับแบบ AddNode ที่เป็นการสร้างโหนดใหม่ต่อท้าย Linked List อ. กิตตินันท์ น้1อยมณี 20
  • 21. InsertNode กรณีที่ walk เป็น Pointer 1 ระดับ อ. กิตตินันท์ น้21อยมณี 21
  • 22. InsertNode • Step 1: สร้างโหนด Temp ขึ้นมาเพื่อเก็บโหนดเก่าเอาไว้ก่อน อ. กิตตินันท์ น้1อยมณี 22  one  two  three    temp walk start data next data next data next 1
  • 23. InsertNode • Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย อ. กิตตินันท์ น้1อยมณี 23  one  two  three    temp walk start data next data next data next
  • 24. InsertNode • Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย อ. กิตตินันท์ น้1อยมณี 24   temp walk start data next data next  one  two  three  data next
  • 25. InsertNode • Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย อ. กิตตินันท์ น้1อยมณี 25   temp walk start data next data next data next  one  two  three  three  data next
  • 26. InsertNode • Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย อ. กิตตินันท์ น้1อยมณี 26   temp walk start data next data next data next  one  two  three  three  data next 2
  • 27. InsertNode • Step 3: ให้โหนดใหม่ชี้ไปที่ temp ได้เลย อ. กิตตินันท์ น้1อยมณี 27   temp walk start data next data next data next  one  two  three  three  data next 3
  • 28. InsertNode • Step 3: ให้โหนดใหม่ชี้ไปที่ temp ได้เลย อ. กิตตินันท์ น้1อยมณี 28   temp walk start data next data next data next  one  two  three  three  data next 32 1
  • 29. InsertNode • จุดสังเกต –ส่ง now ให้ walk –walk เป็น pointer 1 ระดับ –แทรกแทนโหนดปัจจุบันไม่ได้ อ. กิตตินันท์ น้1อยมณี 29
  • 30. InsertNode กรณีที่ walk เป็น Pointer 2 ระดับ อ. กิตตินันท์ น้30อยมณี 30
  • 31. InsertNode • Step 1: สร้างโหนด Temp ขึ้นมาเพื่อเก็บโหนดเก่าเอาไว้ก่อน อ. กิตตินันท์ น้1อยมณี 31  one  two  three    temp walk start data next data next data next 1
  • 32. InsertNode • Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย อ. กิตตินันท์ น้1อยมณี 32  one  two  three    temp walk start data next data next data next
  • 33. InsertNode • Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย อ. กิตตินันท์ น้1อยมณี 33   temp walk start data next data next  one  two  three  data next
  • 34. InsertNode • Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย อ. กิตตินันท์ น้1อยมณี 34   temp walk start data next data next data next  one  two  three  three  data next
  • 35. InsertNode • Step 2: เปลี่ยนจุดที่ walk ชี้ ให้ไปชี้ที่โหนดใหม่ได้เลย อ. กิตตินันท์ น้1อยมณี 35   temp walk start data next data next data next  one  two  three  three  data next 2
  • 36. InsertNode • Step 3: ให้โหนดใหม่ชี้ไปที่ temp ได้เลย อ. กิตตินันท์ น้1อยมณี 36   temp walk start data next data next data next  one  two  three  three  data next 3
  • 37. InsertNode • Step 3: ให้โหนดใหม่ชี้ไปที่ temp ได้เลย อ. กิตตินันท์ น้1อยมณี 37   temp walk start data next data next data next  one  two  three  three  data next 32 1
  • 38. InsertNode • จุดสังเกต –walk เป็น Pointer 2 ระดับ –ส่ง now ให้ walk –สามารถแทรกโหนดใหม่แทนปัจจุบันได้ อ. กิตตินันท์ น้1อยมณี 38
  • 40. DeleteNode • การ Delete คือการลบโหนดที่อยู่จากโหนด now อ. กิตตินันท์ น้1อยมณี 40
  • 41. DeleteNode กรณีที่ walk เป็น Pointer 1 ระดับ อ. กิตตินันท์ น้41อยมณี 41
  • 42. DeleteNode • Step 1: สร้างโหนด Temp ขึ้นมาเพื่อเก็บโหนดเก่าเอาไว้ก่อน อ. กิตตินันท์ น้1อยมณี 42  one  two  three  four   walk start data next data next data next data next  temp1
  • 43. DeleteNode • Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย อ. กิตตินันท์ น้1อยมณี 43  one  two  three  four   walk start data next data next data next data next  temp
  • 44. DeleteNode • Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย อ. กิตตินันท์ น้1อยมณี 44  one  two  three  four   walk start data next data next data next data next  temp 2
  • 45. DeleteNode • Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย อ. กิตตินันท์ น้1อยมณี 45  one  two  three  four   walk start data next data next data next data next  temp 2 1
  • 46. DeleteNode • จุดสังเกต –ส่ง now ให้ walk –walk เป็น Pointer 1 ระดับ –ลบโหนดปัจจุบันไม่ได้ อ. กิตตินันท์ น้1อยมณี 46
  • 47. DeleteNode กรณีที่ walk เป็น Pointer 2 ระดับ อ. กิตตินันท์ น้47อยมณี 47
  • 48. DeleteNode • Step 1: สร้างโหนด Temp ขึ้นมาเพื่อเก็บโหนดเก่าเอาไว้ก่อน อ. กิตตินันท์ น้1อยมณี 48  one  two  three  four   walk start data next data next data next data next  temp1
  • 49. DeleteNode • Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย อ. กิตตินันท์ น้1อยมณี 49  one  two  three  four   walk start data next data next data next data next  temp
  • 50. DeleteNode • Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย อ. กิตตินันท์ น้1อยมณี 50  one  two  three  four   walk start data next data next data next data next  temp 2
  • 51. DeleteNode • Step 2: เปลี่ยน Pointer ที่ walk ชี้ ให้ไปชี้ที่ temp ได้เลย อ. กิตตินันท์ น้1อยมณี 51  one  two  three  four   walk start data next data next data next data next  temp 2 1
  • 52. DeleteNode • จุดสังเกต –walk เป็น Pointer 2 ระดับ –ส่ง now ให้ walk –สามารถลบโหนดปัจจุบันได้ อ. กิตตินันท์ น้1อยมณี 52