โครงสร้างข้อมูลแบบลิงค์ลิสต์ linked list
DESCRIPTION
1. Charter 4. โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List. 2. Charter 4. โครงสร้างข้อมูลลิงค์ลิสต์ (Linked List). - PowerPoint PPT PresentationTRANSCRIPT
โครงสร�างข้�อมู�ลแบบล�งค�ล�สต์�Linked List
1Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
จากการทำ�างานข้องโครงสร�างข้�อมู�ลอาร�เรย์� (Array Structure) , โครงสร�างข้�อมู�ลสแต์ก (Stack Structure) และโครงสร�างข้�อมู�ลค�ว (Queue Structure) มู�ล�กษณะการจ�ดเก!บข้�อมู�ลและการเข้�าถึ#งข้�อมู�ลในโครงสร�างแบบล�าด�บเป็&นพื้()นทำ�*ต์+อเน(*องก�น การใช้�งานข้องโครงสร�างถึ�กจ�าก�ดไว�ไมู+สามูารถึทำ�าการป็ร�บเป็ล�*ย์นหร(อแก�ไข้ข้นาดข้องโครงสร�างได� หร(อหากต์�องการป็ร�บเป็ล�*ย์นโครงสร�างใหมู+ จะทำ�าให�เส�ย์เวลาในการป็ระมูวลผล ซึ่#*งในการใช้�งานโป็รแกรมูพื้()นทำ�*หน+วย์ความูจ�า (Memory) เป็&นส�*งจ�าเป็&นมูาก การแก�ไข้ป็1ญหาด�งกล+าว โดย์ใช้�โครงสร�างข้�อมู�ลแบบอ(*น ๆ เป็&นส�*งจ�าเป็&นทำ�*ต์�องพื้�จารณาและย์ากมูาก
2Charter 4
จากแนวความูค�ดทำ�*จะน�าต์�วช้�) (Pointer) มูาใช้�ต์�าแหน+งโครงสร�างข้�อมู�ลซึ่#*งจะทำ�าให�ไมู+ต์�องคอย์ก�งวลในเร(*องข้องการก�าหนดข้นาดโครงสร�าง ทำ�าให�คอมูพื้�วเต์อร�สามูารถึใช้�งานพื้()นทำ�*หน+วย์ความูจ�าได�เต์!มูป็ระส�ทำธิ�ภาพื้
ต์�วชี้�� (Pointer) บางคร��งเร�ยก ล งค� (Link) หร�อ ต์�วอ�างอ ง (Reference) ค�อ การก�าหนดต์�วแปร (Variable) เพื่�"อเก#บต์�าแหน$งข้องต์�วแปรอ�"นๆ หร�อโครงสร�างข้�อมู�ลอ�"น ๆ ที่�"ใชี้�อย�$ในโปรแกรมู
3Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
4Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
Pointers to Structures
โครงสร�างข้�อมู�ลล�งค�ล�สต์�เป็&นโครงสร�างข้�อมู�ลแบบราย์การเช้�งเส�นทำ�*มู�ล�กษณะการด�าเน�นการเพื้�*มูข้�อมู�ล (Insertion) หร(อลบข้�อมู�ล (Deletion) ออกจากโครงสร�าง สามูารถึกระที่�าที่�"ข้�อมู�ลต์รงต์�าแหน$งใด ๆ ในโครงสร�างก#ได� ด�งน�)น ล�กษณะข้องโครงสร�างจ#งมู�ความูย�ดหย*$น (Flexible) กว+าและไมู$มู�ข้�ดจำ�าก�ดด�านความูจำ*ข้องข้�อมู�ลในโครงสร�าง แต์+ข้�)นต์อนการด�าเน�นงานก�บโครงสร�างล�งค�ล�สต์�น�)มู�ความูย์6+งย์ากและซึ่�บซึ่�อนมูากกว+า
5Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
การแที่นโครงสร�างข้�อมู�ลล งค�ล สต์�โครงสร�างข้�อมู�ลล�งค�ล�สต์� (Linked List)
ป็ระกอบด�วย์ส+วนส�าค�ญ 2 ส+วนรวมูเป็&นโครงสร�างเร�ย์กว+า โหนด (Node) ค(อ
1 .Data Link ทำ�าหน�าทำ�*เก!บข้�อมู�ล 2. Link Fieldทำ�าหน�าทำ�*เก!บต์�าแหน+งทำ�*อย์�+
ข้องโครงสร�างสมูาช้�กต์�วถึ�ดไป็
6Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
ล�กษณะข้องโหนด
ส$วนที่�"เก#บข้�อมู�ล ส$วนที่�"เก#บต์�าแหน$งที่�"อย�$ข้องโหนดถั�ดไป
DATA LINK
ล�กษณะข้องการเก!บข้�อมู�ลและเช้(*อมูโย์งโหนดอ(*น ๆ ข้องล�งค�ล�สต์� เร�*มูจากจ6ดเร�*มูต์�นข้องโครงสร�าง (Start Pointer) ซึ่#*งเป็&นต์�วแป็รทำ�*ทำ�าหน�าทำ�*เก!บต์�าแหน+งข้องข้�อมู�ลทำ�*อย์�+โหนดแรกในโครงสร�างช้�)ไป็ย์�งโครงสร�างข้�อมู�ลช้6ดถึ�ดไป็ และในโครงสร�างช้6ดด�งกล+าวน�)ก!มู� Pointer ช้�)ไป็ย์�งโครงสร�างข้�อมู�ลอ(*น ๆ ต์+อไป็ในล�กษณะเด�ย์ว ส+วน Pointer ในโหนดส6ดทำ�าย์จะเก!บค+า NULL (ค+าว+าง ) บางคร�)งแทำนต์�าแหน+งส6ดทำ�าย์ในโครงสร�างด�วย์ส�ญล�กษณ�ทำางไฟฟ8า เร�ย์กว+า ground symbol) เป็&นการแสดงต์�าแหน+งส6ดทำ�าย์ในโครงสร�าง
7Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
8Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
การเชี้�"อมูโยงข้องโครงสร�างล งค�ล สต์� (A linked list)
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
9Charter 4
การแที่นล งค�ล สต์�ในพื่��นที่�"หน$วยความูจำ�าแบบหน/"ง
10
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)การเข้�าถั/งข้�อมู�ลภายในโครงสร�างล งค�ล สต์�
การเข้�าถึ#งข้�อมู�ลภาย์ในโครงสร�างล�งค�ล�สต์� จะต์�องอาศั�ย์พื้อย์น�เต์อร�เป็&นต์�วเข้�าไป็ในโครงสร�าง สมูมูต์�ให�พื้อย์น�เต์อร�ด�งกล+าว ค(อ PTR และทำ�าหน�าทำ�*ช้�)ต์�าแหน+งแอดเดรสข้องโหนดในโครงสร�าง เมู(*อต์�องการไป็ย์�งโหนดถึ�ดไป็ก!ให�ทำ�าการเล(*อนต์�าแหน+งข้องพื้อย์น�เต์อร� โดย์ต์�าแหน+งข้องโหนดถึ�ดไป็ได�จากส+วนข้อง LINK ในโหนดป็1จจ6บ�น
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
11
Charter 4
PTR
แสดงการเปล�"ยนพื่อยน�เต์อร�เพื่�"อไปย�งโหนดถั�ดไป ( PTR = LINK[PTR] )
12
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)ข้��นต์อนการเข้�าถั/งข้�อมู�ลในโครงสร�าง การเข้�าถึ#งในโครงสร�างเร�ย์กว+า การที่�า Traversing มู�ข้�)นต์อนด�งต์+อไป็น�)
ก�าหนดให� DATA เป็&นโครงสร�างข้�อมู�ลล�งค�ล�สต์� และพื้อย์น�เต์อร� PTR ทำ�าหน�าทำ�*ช้�)โหนดทำ�*ก�าล�งด�าเน�นการ Process อย์�+ในข้ณะน�)น (Current Node)
1. ก�าหนดค+าเร�*มูต์�นให�ก�บพื้อย์น�เต์อร� PTR.2. การวนรอบด�าเน�นการ Process ข้�อมู�ล3. Apply Process to DATA [PTR]4. ป็ล�*ย์นค+าพื้อย์น�เต์อร� PTR ให�ช้�)โหนดถึ�ดไป็5. เสร!จส�)นข้�)นต์อน
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
13
Charter 4
Start
Set PTR = S tart
PTR = NULL Apply P rocess to DATA[PTR] Set PTR = LINK[PTR]
S top
Yes
No
การสร�างโหนดและก�าหนดโครงสร�างการสร�างโหนด ค(อ การเต์ร�ย์มูโครงสร�าง
ระเบ�ย์นส�าหร�บจ�ดเก!บข้�อมู�ล เมู(*อก�าหนดโครงสร�างข้องโหนดแล�วก!สามูารถึก�าหนดพื้อย์น�เต์อร� และเข้�ย์นส+วนข้องโป็รแกรมูแสดงการป็ระกาศัโครงสร�าง ด�งน�)
struct node {
int num ; struck node *Link ;
} * Start, * Ptr ;เมู(*อ * ค(อ พื้อย์น�เต์อร�ทำ�*ทำ�าหน�าทำ�*ช้�)ต์�าแหน+งข้องโหนดแรกในโครงสร�าง *Ptr ค(อ พื้อย์น�เต์อร�ทำ�*ทำ�าหน�าทำ�*ช้�)ต์�าแหน+งข้องโหนดป็1จจ6บ�น
14
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
Storage Pool Storage Pool หร(อ FFFF FFFF หมูาย์ถึ#ง
เน()อทำ�*ว+างในหน+วย์ความูจ�า มู�ล�กษณะเป็&นโหนดเก!บอย์�+ในโครงสร�างข้�อมู�ลล�งค�ล�สต์� หร(ออาจเร�ย์กได�ว+าเป็&น
Free Stack ล�กษณะการด�าเน�นการเหมู(อนก�บโครงสร�างข้�อมู�ลสแต์!ก เมู(*อมู�การเพื้�*มูสมูาช้�กใหมู+ในโครงสร�างข้�อมู�ลล�งค�ล�สต์�จะน�าโหนดว+าง
1 โหนดออกมูาจาก Free List (เป็&นโหนดแรกใน Fr ee List) จากน�)นใส+ข้�อมู�ลลงไป็ในส+วนข้อง F FFF
Field หล�งจากน�)น น�าโหนดด�งกล+าวเช้(*อมูโย์งเข้�าไป็ไว�ในโครงสร�างข้�อมู�ลทำ�*ต์�องการ และหากมู�การลบสมูาช้�กต์�วใดต์�วหน#*งออกจากโครงสร�างจะต์�องน�าโหนดทำ�*ถึ�กลบน�)ใส+ค(นใน Free List ไว�เป็&นโหนดแรกใน Free List เสมูอ
15
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
16
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
START
AVAIL
DATA LIST
FREE LIST
p q
P P
แสดงโครงสร�างล งค�ล สต์�ข้อง Free Storage List
17
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
AVAIL
NULL
AVAIL
AVAIL
NULL
NULL
NEW
NEW
NEW
…..
…..
…..
Step (a) : NEWAvail
Step (B ) : Avail Link(Avail)
Step (C ) : NEWNULL
ข้��นต์อนการข้อ New Node (Get Node)
การเพื่ "มูข้�อมู�ลในโครงสร�างเมู(*อก�าหนดโครงสร�างข้�อมู�ลเร�ย์บร�อย์แล�ว ก!
สามูารถึทำ�าการเพื้�*มูข้�อมู�ลในโครงสร�างได� โดย์การข้อโหนดว+างจาก free list และน�ามูาเช้(*อมูโย์งก�บราย์การข้�อมู�ลทำ�*มู�อย์�+เด�มูในโครงสร�างต์รงต์�าแหน+งทำ�*ต์�องการ
การเพื้�*มูข้�อมู�ลในโครงสร�างข้�อมู�ลล�งค�ล�สต์� อาจเก�ดในล�กษณะทำ�*ต์+างก�น ซึ่#*งสร6ป็ได�เป็&น 3 ล�กษณะ ค(อ
1. การเพื้�*มูข้�อมู�ลทำ�*จ6ดเร�*มูต์�นข้องโครงสร�าง 2. การเพื้�*มูข้�อมู�ลต์+อจากโหนดทำ�*ก�าหนด 3. การเพื้�*มูข้�อมู�ลทำ�*จ6ดส6ดทำ�าย์ข้องโครงสร�าง
18
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
19
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
…..
NEW ค�อ โหนดว$างที่�"ได�จำาก Storage Pool
NEW
START
แสดงการเพื่ "มูข้�อมู�ลที่�"จำ*ดเร "มูต์�นข้องโครงสร�าง
ข้�)นต์อนการเพื้�*มูข้�อมู�ลทำ�*ต์�าแหน+งเร�*มูต์�นข้องโครงสร�าง 1. ต์รวจสอบ OVERFLOW ถึ�าโหนดใหมู+มู�
ค+าเป็&น NULL แสดงว+า OVERFLOW2. ก�าหนด PTR ให�ช้�)ไป็ทำ�*โหนดข้อง FREE
LIST3.ใส+ข้�อมู�ลใหมู+ลงไป็ในโหนดใหมู+4.ให�โหนดใหมู+ช้�)ไป็ย์�งโหนดเร�*มูต์�นเด�มูและ
เป็ล�*ย์นต์�าแหน+งเร�*มูต์�นให�ช้�)ไป็ย์�งโหนดใหมู+
20
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
การเพื่ "มูข้�อมู�ลในโครงสร�างเมู(*อก�าหนดโครงสร�างข้�อมู�ลเร�ย์บร�อย์แล�ว ก!
สามูารถึทำ�าการเพื้�*มูข้�อมู�ลในโครงสร�างได� โดย์การข้อโหนดว+างจาก free list และน�ามูาเช้(*อมูโย์งก�บราย์การข้�อมู�ลทำ�*มู�อย์�+เด�มูในโครงสร�างต์รงต์�าแหน+งทำ�*ต์�องการ
การเพื้�*มูข้�อมู�ลในโครงสร�างข้�อมู�ลล�งค�ล�สต์� อาจเก�ดในล�กษณะทำ�*ต์+างก�น ซึ่#*งสร6ป็ได�เป็&น 3 ล�กษณะ ค(อ
1. การเพื้�*มูข้�อมู�ลทำ�*จ6ดเร�*มูต์�นข้องโครงสร�าง 2. การเพื้�*มูข้�อมู�ลต์+อจากโหนดทำ�*ก�าหนด 3. การเพื้�*มูข้�อมู�ลทำ�*จ6ดส6ดทำ�าย์ข้องโครงสร�าง
21
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
การเพื่ "มูข้�อมู�ลที่�"จำ*ดเร "มูต์�นข้องโครงสร�างเป็&นการเพื้�*มูโหนดข้องข้�อมู�ลไป็ย์�งต์�าแหน+งแรก
ข้องโครงสร�างล�งค�ล�สต์� โดย์การเป็ล�*ย์นค+าเร�*มูต์�นให�ช้�)ไป็ย์�งต์�าแหน+งข้องโหนดใหมู+ (NEW Node) ทำ�*สร�างข้#)น และให� Pointer ข้องโหดใหมู+ช้�)ไป็ย์�งต์�าแหน+งเร�*มูต์�นเด�มูแทำน
22
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
23
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
…..
NEW ค�อ โหนดว$างที่�"ได�จำาก Storage Pool
NEW
START
แสดงการเพื่ "มูข้�อมู�ลที่�"จำ*ดเร "มูต์�นข้องโครงสร�าง
ข้��นต์อนการเพื่ "มูข้�อมู�ลที่�"ต์�าแหน$งเร "มูต์�นข้องโครงสร�าง
1. ต์รวจสอบ OVERFLOW ถึ�าโหนดใหมู+มู�ค+าเป็&น NULL แสดงว+า OVERFLOW
2. ก�าหนด PTR ให�ช้�)ไป็ทำ�*โหนดข้อง FREE LIST
3.ใส+ข้�อมู�ลใหมู+ลงไป็ในโหนดใหมู+4.ให�โหนดใหมู+ช้�)ไป็ย์�งโหนดเร�*มูต์�นเด�มู
5 . เป็ล�*ย์นต์�าแหน+งเร�*มูต์�นให�ช้�)ไป็ย์�งโหนดใหมู+
24
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
การเพื่ "มูข้�อมู�ลต์$อจำากโหนดที่�"ก�าหนดเป็&นการแทำรกโหนดข้�อมู�ลใหมู+เข้�าไป็ระหว+าง
โหนดข้�อมู�ล 2 โหนด โดย์การเป็ล�*ย์น Pionter ทำ�*ช้�)โหนดเก+าให�ช้�)ไป็ย์�งต์�าแหน+งข้องโหนดใหมู+ และ ให� Poinnter ข้องโหนดใหมู+ข้�)ไป็ย์�งต์�าแหน+งเด�มูแทำน
25
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
26
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
NEW
p q
Start
แสดงการเพื่ "มูข้�อมู�ลต์$อจำากโหนดที่�"ก�าหนด
ข้��นต์อนการเพื่ "มูข้�อมู�ลที่�"ต์�าแหน$งเร "มูต์�นข้องโครงสร�าง
1. ต์รวจสอบ OVERFLOW ถึ�าโหนดใหมู+มู�ค+าเป็&น NULL แสดงว+า OVERFLOW
2. ก�าหนด PTR ให�ช้�)ไป็ทำ�*โหนดข้อง FREE LIST
3. ใส+ข้�อมู�ลใหมู+ลงไป็ในโหนดใหมู+4. ก�าหนดค+าให�โหนดแรก ถึ�า PTR = NULL
ให�ก�าหนดโหนดใหมู+เป็&นจ6ดเร�*มูต์�น ถึ�า PTR <> NULL ให�น�าโหนดใหมู+มูาต์+อ (PTR ช้�)ไป็ทำ�*โหนดใหมู+)
27
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
การเพื่ "มูข้�อมู�ลเป1นโหนดส*ดที่�ายข้องโครงสร�างเป็&นการน�าโหนดข้�อมู�ลใหมู+มูาต์+อย์�งต์�าแหน+ง
ทำ�าย์ส6ดข้องโครงสร�าง (Pointer ข้องโหนดส6ดทำ�าย์มู�ค+าเป็&น NULL) โดย์การก�าหนดให� Pointer ข้องโหนดข้�อมู�ลส6ดทำ�าย์ ช้�)ไป็ย์�งโหนดใหมู+ และให� Pointer ข้อง โหนดใหมู+มู�ค+าเป็&น NULL แทำน
28
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
29
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
NEW
p q
Start
NULL
แสดงข้��นต์อนการเพื่ "มูข้�อมู�ลเป1นโหนดส*ดที่�ายข้องโครงสร�าง
ข้��นต์อนการเพื่ "มูข้�อมู�ลเป1นโหนดส*ดที่�ายข้องโครงสร�าง
1. ต์รวจสอบ OVERFLOW ถึ�าโหนดใหมู+มู�ค+าเป็&น NULL แสดงว+า OVERFLOW
2. ก�าหนด PTR (ทำ�*อย์�+ต์�าแหน+งส6ดทำ�าย์ ) ให�ช้�)ไป็ทำ�*โหนดข้อง FREE LIST
3. ใส+ข้�อมู�ลใหมู+ลงไป็ในโหนดใหมู+ 4 . ก�าหนด PTR ข้องโหนดใหมู+มู�ค+าเป็&นน
NULL
30
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
การลบข้�อมู�ลจำากโครงสร�างการลบข้�อมู�ลจากโครงสร�าง หมูาย์ถึ#ง การด#ง
เอาโหนดทำ�*ต์�องการลบออกจากล�งค�ล�สต์�ช้6ดเด�มู ด�งน�)น การเป็ล�*ย์นแป็ลงทำ�*เก�ดข้#)นค(อ การเป็ล�*ย์นค+าพื้อย์น�เต์อร�และเมู(*อทำ�าการลบข้�อมู�ลออกจากโครงสร�างแล�วจะต์�องค(นโหนดทำ�*ถึ�กลบให�ก�บ Storage Pool เพื้(*อทำ�*จะได�สามูารถึน�าหน+วย์ความูจ�าส+วนน�)นไป็ใช้�งานต์+อไป็
การลบข้�อมู�ลออกจากโครงสร�างล�งค�ล�สต์� เก�ดข้#)นได�หลาย์ล�กษณะสร6ป็ได�ด�งน�)
1. การลบโหนดแรก 2. การลบโหนดทำ�*อย์�+หล�งโหนดทำ�*ก�าหนด 3. การลบโหนดส6ดทำ�าย์
31
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
32
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)Sta
rt
p qx
ก ) ก$อนลบข้�อมู�ล
Start
p qx
ข้ ) หล�งการลบข้�อมู�ล
แสดงการลบโหนดออกจำากโครงสร�างข้�อมู�ลล งค�ล สต์�
33
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
แสดงการลบโหนดและส$งโหนดค�นกล�บ Storage Pool
Start
p qx
Avail
34
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
ข้��นต์อนการลบโหนดมู�ด�งน�� 1. เก!บค+าต์�าแหน+งและค+าข้อง Pointer ข้อง
โหนดทำ�*ต์�องการล 2. ก�าหนดค+าข้อง Pointer ข้องโหนดทำ�*
ต์�องการลบ ไป็ย์�งโหนดก+อนหน�าน�)น 3. ก�าหนดต์�าแหน+งข้องโหนดทำ�*ต์�องการลบ
ค(นกล�บไป็ย์�ง Storage Pool
ประเภที่ข้องโครงสร�างข้�อมู�ลล งค�ล สต์�โครงสร�างข้�อมู�ลล�งค�ล�สต์� แบ+งเป็&น 2 กล6+มู
ใหญ+ ๆ ได�แก+ 1. โครงสร�างข้�อมู�ลล�งค�ล�สต์�เด�*ย์ว (Singly
Linked List : SLL) 2. โครงสร�างข้�อมู�ลล�งค�ล�สต์�ค�+ (Doubly
Linked List : DLL)
35
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
โครงสร�างข้�อมู�ลล งค�ล สต์�เด�"ยว (SLL)แบ+งออกเป็&น 2 ป็ระเภทำ1. โครงสร�างข้�อมู�ลล�งค�ล�สต์�แบบ Ordinary
Singly Linked List ค(อ โครงสร�างข้�อมู�ลล�งค�ล�สต์�ทำ�*มู�ล�กษณะเหมู(อนก�บโครงสร�างข้�อมู�ลล�งค�ล�สต์�ทำ�*กล+าวมูาแล�วต์�)งแต์+ต์�น
2. โครงสร�างข้�อมู�ลล�งค�ล�สต์�แบบ Circular Singly Linked List (CLL) มู�ล�กษณะคล�าย์ก�บแบบ SLL ทำ�*วไป็ เพื้�ย์งแต์+พื้อย์น�เต์อร�สามูารถึช้�)กล�บมูาย์�งต์�าแหน+งเร�*มูต์�นข้องโครงสร�างได� โดย์ใช้�พื้อย์น�เต์อร�ข้องโหนดส6ดทำ�าย์ในโครงสร�างช้�)ไป็ย์�งโหนดแรก ทำ�าให�โครงสร�างข้�อมู�ลมู�ล�กษณะเป็&นวงกลมู
36
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
37
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)STA
RT
…..
HEAD
แสดงล�กษณะข้อง Circular Singly Linked List
แสดงล�กษณะข้อง Empty Circular Singly Linked List
โครงสร�างข้�อมู�ลล งค�ล สต์�ค�$ (Doubly Linked List)
โครงสร�างข้�อมู�ลล�งค�ล�สต์�ค�+ (Doubly Linked List) เป็&นโครงสร�างทำ�*แต์+ละโหนดข้�อมู�ลสามูารถึช้�)ต์�าแหน+งโหนดข้�อมู�ลถึ�ดไป็ได� 2 ทำ�ศัทำาง (มู�พื้อย์น�เต์อร�ช้�)ต์�าแหน+งอย์�+สองทำ�ศัทำาง ) โดย์มู�พื้อย์น�เต์อร�อย์�+ 2 ต์�ว ค(อ พื้อย์น�เต์อร� LLINK ทำ�าหน�าทำ�*ช้�)ไป็ย์�งโหนดด�านซึ่�าย์ข้องโหนดข้�อมู�ลน�)น ๆ และ พื้อย์น�เต์อร� RLINK ทำ�าหน�าทำ�*ช้�)ไป็ย์�งโหนดด�านข้วาข้องโหนดข้�อมู�ลน�)น ๆ
38
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
LLINK
DATA RLINK
การใช้�งานข้องโหนดข้�อมู�ลแบบล�งค�ล�สต์�ค�+ ค(อ พื้อย์น�เต์อร� LLINK จะช้�)ไป็ย์�งโหนดด�านซึ่�าย์ข้องโหนดข้�อมู�ลน�)น ๆ โดย์พื้อย์�เต์อร�ทำ�*โหนดข้�อมู�ลส6ดทำ�าย์ทำางด�านซึ่�าย์ (LLINK ต์�วส6ดทำ�าย์ ) จะมู�ค+าเป็&น NULL และ พื้อย์น�เต์อร� RLINK ทำ�าหน�าทำ�*ช้�)ไป็ย์�งโหนดด�านข้วาข้องโหนดข้�อมู�ลน�)น ๆ โดย์พื้อย์�เต์อร�ทำ�*โหนดข้�อมู�ลส6ดทำ�าย์ทำางด�านข้วา (RLINK ต์�วส6ดทำ�าย์ ) จะมู�ค+าเป็&น NULL เช้+นก�น
39
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
LLINK
DATA
RLINK
LLINK
DATA
RLINK
LLINK
DATA
RLINK
ล�กษณะการที่�างานข้องโครงสร�างล งค�ล สต์�ค�$ (Doubly Linked List)
ช้น�ดข้องโครงสร�างข้�อมู�ลล�งค�ล�สต์�แบบ Doubly Linked List
แบ+งออกเป็&น 2 แบบ ค(อ 1. โครงสร�างข้�อมู�ลล�งค�ล�สต์�แบบ
Ordinary Doubly Linked List(ODLL) 2. โครงสร�างข้�อมู�ลล�งค�ล�สต์�แบบ
Circularly Doubly Linked List (CDLL)
40
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
โครงสร�างข้�อมู�ลล งค�ล สต์�แบบ Ordinary DLLโครงสร�างข้�อมู�ลล�งค�ล�สต์�แบบ Ordinary
DLL ค(อ ล�กษณะข้องโครงสร�างล�งค�ล�สต์�ทำ�*ส+วนข้องพื้อย์น�เต์อร�ทำ�* link ทำางซึ่�าย์ (LLINK) ข้องโหนดซึ่�าย์มู(อส6ดและพื้อย์น�เต์อร�ทำ�* link ทำางด�านข้วาส6ดข้องโครงสร�าง (RLINK) มู�ค+าเป็&น NULL ทำ�)งค�+ เพื้(*อแสดงว+าเป็&นโหนดส6ดทำ�าย์ข้องโครงสร�างทำ�*ป็ลาย์ทำ�)งสองด�าน
41
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
LLINK
DATA
RLINK
LLINK
DATA
RLINK
LLINK
DATA
RLINK
HEAD
NULL
NULL
42
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
p q
n
แสดงการเพื่ "มูโหนดข้�อมู�ลเข้�าส�$โครงสร�าง Ordinary DLL
ข้�)นต์อนการเพื้�*มูโหนดข้�อมู�ลมู�ด�งน�) 1. ต์รวจสอบว+า โหนด n เป็&นโหนดว+างหร(อไมู+
(ถึ�าโหนด n มู�ค+าเป็&น NULL แสดงว+าเป็&นโหนดว+าง ) 2. ถึ�าโหนด n ไมู+เป็&นโหนดว+าง ให�ก�าหนดพื้อ
ย์น�เต์อร�ข้อง nn -> r = p -> rn -> l = q -> l
3. ก�าหนดพื้อย์น�เต์อร� p -> r ให�เป็&นต์�าแหน+งข้องโหนด n4. ก�าหนดพื้อย์น�เต์อร� q -> l ให�เป็&นต์�าแหน+งข้องโหนด n
5. ใส+ข้�อมู�ลลงไป็ในโหนด n
43
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
ข้�)นต์อนการลบโหนดมู�ด�งน�) 1. ต์รวจสอบว+ามู�ข้�อมู�ลหร(อไมู+ (ถึ�าโหนด r
และ l มู�ค+าเป็&น start แสดงว+าไมู+มู�ข้�อมู�ล ) 2. ถึ�ามู�ข้�อมู�ล ให�ก�าหนดพื้อย์น�เต์อร�ข้อง p
และ qp -> r = d -> rq -> l = d -> l
3. ค(นโหนดทำ�*ลบให�ก�บระบบ
44
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
โครงสร�างข้�อมู�ลล งค�ล สต์�แบบ Circularly DLLโครงสร�างข้�อมู�ลล�งค�ล�สต์�แบบ Circularly
DLL ค(อ ล�กษณะข้อง Doubly linked list ทำ�*มู� Link ทำางซึ่�าย์ (LLINK) ข้องโหนดซึ่�าย์มู(อส6ดเก!บต์�าแหน+งทำ�*อย์�+ข้องโหนดทำ�*อย์�+ทำางข้วามู(อส6ดและ Link ทำางด�านข้วา (RLINK) ข้องโหนดข้วามู(อส6ดก!จะเก!บต์�าแหน+งทำ�*อย์�+ข้องโหนดทำ�*อย์�+ทำางซึ่�าย์มู(อส6ด
45
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
46
Charter 4
โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)
LLINK
DATA RLINK
LLINK
DATA RLINK
LLINK
DATA RLINK
Start
NULL
แสดงโครงสร�างข้�อมู�ลล งค�ล สต์�แบบ Circularly DLL