โครงสร้างข้อมูลแบบลิงค์ลิสต์ linked list

46
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโ Linked List 1 Charter 4

Upload: tekli

Post on 12-Jan-2016

69 views

Category:

Documents


2 download

DESCRIPTION

1. Charter 4. โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List. 2. Charter 4. โครงสร้างข้อมูลลิงค์ลิสต์ (Linked List). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

โครงสร�างข้�อมู�ลแบบล�งค�ล�สต์�Linked List

1Charter 4

Page 2: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

จากการทำ�างานข้องโครงสร�างข้�อมู�ลอาร�เรย์� (Array Structure) , โครงสร�างข้�อมู�ลสแต์ก (Stack Structure) และโครงสร�างข้�อมู�ลค�ว (Queue Structure) มู�ล�กษณะการจ�ดเก!บข้�อมู�ลและการเข้�าถึ#งข้�อมู�ลในโครงสร�างแบบล�าด�บเป็&นพื้()นทำ�*ต์+อเน(*องก�น การใช้�งานข้องโครงสร�างถึ�กจ�าก�ดไว�ไมู+สามูารถึทำ�าการป็ร�บเป็ล�*ย์นหร(อแก�ไข้ข้นาดข้องโครงสร�างได� หร(อหากต์�องการป็ร�บเป็ล�*ย์นโครงสร�างใหมู+ จะทำ�าให�เส�ย์เวลาในการป็ระมูวลผล ซึ่#*งในการใช้�งานโป็รแกรมูพื้()นทำ�*หน+วย์ความูจ�า (Memory) เป็&นส�*งจ�าเป็&นมูาก การแก�ไข้ป็1ญหาด�งกล+าว โดย์ใช้�โครงสร�างข้�อมู�ลแบบอ(*น ๆ เป็&นส�*งจ�าเป็&นทำ�*ต์�องพื้�จารณาและย์ากมูาก

2Charter 4

Page 3: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

จากแนวความูค�ดทำ�*จะน�าต์�วช้�) (Pointer) มูาใช้�ต์�าแหน+งโครงสร�างข้�อมู�ลซึ่#*งจะทำ�าให�ไมู+ต์�องคอย์ก�งวลในเร(*องข้องการก�าหนดข้นาดโครงสร�าง ทำ�าให�คอมูพื้�วเต์อร�สามูารถึใช้�งานพื้()นทำ�*หน+วย์ความูจ�าได�เต์!มูป็ระส�ทำธิ�ภาพื้

ต์�วชี้�� (Pointer) บางคร��งเร�ยก ล งค� (Link) หร�อ ต์�วอ�างอ ง (Reference) ค�อ การก�าหนดต์�วแปร (Variable) เพื่�"อเก#บต์�าแหน$งข้องต์�วแปรอ�"นๆ หร�อโครงสร�างข้�อมู�ลอ�"น ๆ ที่�"ใชี้�อย�$ในโปรแกรมู

3Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 4: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

4Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Pointers to Structures

Page 5: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

โครงสร�างข้�อมู�ลล�งค�ล�สต์�เป็&นโครงสร�างข้�อมู�ลแบบราย์การเช้�งเส�นทำ�*มู�ล�กษณะการด�าเน�นการเพื้�*มูข้�อมู�ล (Insertion) หร(อลบข้�อมู�ล (Deletion) ออกจากโครงสร�าง สามูารถึกระที่�าที่�"ข้�อมู�ลต์รงต์�าแหน$งใด ๆ ในโครงสร�างก#ได� ด�งน�)น ล�กษณะข้องโครงสร�างจ#งมู�ความูย�ดหย*$น (Flexible) กว+าและไมู$มู�ข้�ดจำ�าก�ดด�านความูจำ*ข้องข้�อมู�ลในโครงสร�าง แต์+ข้�)นต์อนการด�าเน�นงานก�บโครงสร�างล�งค�ล�สต์�น�)มู�ความูย์6+งย์ากและซึ่�บซึ่�อนมูากกว+า

5Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 6: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

การแที่นโครงสร�างข้�อมู�ลล งค�ล สต์�โครงสร�างข้�อมู�ลล�งค�ล�สต์� (Linked List)

ป็ระกอบด�วย์ส+วนส�าค�ญ 2 ส+วนรวมูเป็&นโครงสร�างเร�ย์กว+า โหนด (Node) ค(อ

1 .Data Link ทำ�าหน�าทำ�*เก!บข้�อมู�ล 2. Link Fieldทำ�าหน�าทำ�*เก!บต์�าแหน+งทำ�*อย์�+

ข้องโครงสร�างสมูาช้�กต์�วถึ�ดไป็

6Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

ล�กษณะข้องโหนด

ส$วนที่�"เก#บข้�อมู�ล ส$วนที่�"เก#บต์�าแหน$งที่�"อย�$ข้องโหนดถั�ดไป

DATA LINK

Page 7: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

ล�กษณะข้องการเก!บข้�อมู�ลและเช้(*อมูโย์งโหนดอ(*น ๆ ข้องล�งค�ล�สต์� เร�*มูจากจ6ดเร�*มูต์�นข้องโครงสร�าง (Start Pointer) ซึ่#*งเป็&นต์�วแป็รทำ�*ทำ�าหน�าทำ�*เก!บต์�าแหน+งข้องข้�อมู�ลทำ�*อย์�+โหนดแรกในโครงสร�างช้�)ไป็ย์�งโครงสร�างข้�อมู�ลช้6ดถึ�ดไป็ และในโครงสร�างช้6ดด�งกล+าวน�)ก!มู� Pointer ช้�)ไป็ย์�งโครงสร�างข้�อมู�ลอ(*น ๆ ต์+อไป็ในล�กษณะเด�ย์ว ส+วน Pointer ในโหนดส6ดทำ�าย์จะเก!บค+า NULL (ค+าว+าง ) บางคร�)งแทำนต์�าแหน+งส6ดทำ�าย์ในโครงสร�างด�วย์ส�ญล�กษณ�ทำางไฟฟ8า เร�ย์กว+า ground symbol) เป็&นการแสดงต์�าแหน+งส6ดทำ�าย์ในโครงสร�าง

7Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 8: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

8Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

การเชี้�"อมูโยงข้องโครงสร�างล งค�ล สต์� (A linked list)

Page 9: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

9Charter 4

การแที่นล งค�ล สต์�ในพื่��นที่�"หน$วยความูจำ�าแบบหน/"ง

Page 10: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

10

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)การเข้�าถั/งข้�อมู�ลภายในโครงสร�างล งค�ล สต์�

การเข้�าถึ#งข้�อมู�ลภาย์ในโครงสร�างล�งค�ล�สต์� จะต์�องอาศั�ย์พื้อย์น�เต์อร�เป็&นต์�วเข้�าไป็ในโครงสร�าง สมูมูต์�ให�พื้อย์น�เต์อร�ด�งกล+าว ค(อ PTR และทำ�าหน�าทำ�*ช้�)ต์�าแหน+งแอดเดรสข้องโหนดในโครงสร�าง เมู(*อต์�องการไป็ย์�งโหนดถึ�ดไป็ก!ให�ทำ�าการเล(*อนต์�าแหน+งข้องพื้อย์น�เต์อร� โดย์ต์�าแหน+งข้องโหนดถึ�ดไป็ได�จากส+วนข้อง LINK ในโหนดป็1จจ6บ�น

Page 11: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

11

Charter 4

PTR

แสดงการเปล�"ยนพื่อยน�เต์อร�เพื่�"อไปย�งโหนดถั�ดไป ( PTR = LINK[PTR] )

Page 12: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

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. เสร!จส�)นข้�)นต์อน

Page 13: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (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

Page 14: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

การสร�างโหนดและก�าหนดโครงสร�างการสร�างโหนด ค(อ การเต์ร�ย์มูโครงสร�าง

ระเบ�ย์นส�าหร�บจ�ดเก!บข้�อมู�ล เมู(*อก�าหนดโครงสร�างข้องโหนดแล�วก!สามูารถึก�าหนดพื้อย์น�เต์อร� และเข้�ย์นส+วนข้องโป็รแกรมูแสดงการป็ระกาศัโครงสร�าง ด�งน�)

struct node {

int num ; struck node *Link ;

} * Start, * Ptr ;เมู(*อ * ค(อ พื้อย์น�เต์อร�ทำ�*ทำ�าหน�าทำ�*ช้�)ต์�าแหน+งข้องโหนดแรกในโครงสร�าง *Ptr ค(อ พื้อย์น�เต์อร�ทำ�*ทำ�าหน�าทำ�*ช้�)ต์�าแหน+งข้องโหนดป็1จจ6บ�น

14

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 15: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked 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)

Page 16: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

16

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

START

AVAIL

DATA LIST

FREE LIST

p q

P P

แสดงโครงสร�างล งค�ล สต์�ข้อง Free Storage List

Page 17: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked 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)

Page 18: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

การเพื่ "มูข้�อมู�ลในโครงสร�างเมู(*อก�าหนดโครงสร�างข้�อมู�ลเร�ย์บร�อย์แล�ว ก!

สามูารถึทำ�าการเพื้�*มูข้�อมู�ลในโครงสร�างได� โดย์การข้อโหนดว+างจาก free list และน�ามูาเช้(*อมูโย์งก�บราย์การข้�อมู�ลทำ�*มู�อย์�+เด�มูในโครงสร�างต์รงต์�าแหน+งทำ�*ต์�องการ

การเพื้�*มูข้�อมู�ลในโครงสร�างข้�อมู�ลล�งค�ล�สต์� อาจเก�ดในล�กษณะทำ�*ต์+างก�น ซึ่#*งสร6ป็ได�เป็&น 3 ล�กษณะ ค(อ

1. การเพื้�*มูข้�อมู�ลทำ�*จ6ดเร�*มูต์�นข้องโครงสร�าง 2. การเพื้�*มูข้�อมู�ลต์+อจากโหนดทำ�*ก�าหนด 3. การเพื้�*มูข้�อมู�ลทำ�*จ6ดส6ดทำ�าย์ข้องโครงสร�าง

18

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 19: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

19

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

…..

NEW ค�อ โหนดว$างที่�"ได�จำาก Storage Pool

NEW

START

แสดงการเพื่ "มูข้�อมู�ลที่�"จำ*ดเร "มูต์�นข้องโครงสร�าง

Page 20: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

ข้�)นต์อนการเพื้�*มูข้�อมู�ลทำ�*ต์�าแหน+งเร�*มูต์�นข้องโครงสร�าง 1. ต์รวจสอบ OVERFLOW ถึ�าโหนดใหมู+มู�

ค+าเป็&น NULL แสดงว+า OVERFLOW2. ก�าหนด PTR ให�ช้�)ไป็ทำ�*โหนดข้อง FREE

LIST3.ใส+ข้�อมู�ลใหมู+ลงไป็ในโหนดใหมู+4.ให�โหนดใหมู+ช้�)ไป็ย์�งโหนดเร�*มูต์�นเด�มูและ

เป็ล�*ย์นต์�าแหน+งเร�*มูต์�นให�ช้�)ไป็ย์�งโหนดใหมู+

20

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 21: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

การเพื่ "มูข้�อมู�ลในโครงสร�างเมู(*อก�าหนดโครงสร�างข้�อมู�ลเร�ย์บร�อย์แล�ว ก!

สามูารถึทำ�าการเพื้�*มูข้�อมู�ลในโครงสร�างได� โดย์การข้อโหนดว+างจาก free list และน�ามูาเช้(*อมูโย์งก�บราย์การข้�อมู�ลทำ�*มู�อย์�+เด�มูในโครงสร�างต์รงต์�าแหน+งทำ�*ต์�องการ

การเพื้�*มูข้�อมู�ลในโครงสร�างข้�อมู�ลล�งค�ล�สต์� อาจเก�ดในล�กษณะทำ�*ต์+างก�น ซึ่#*งสร6ป็ได�เป็&น 3 ล�กษณะ ค(อ

1. การเพื้�*มูข้�อมู�ลทำ�*จ6ดเร�*มูต์�นข้องโครงสร�าง 2. การเพื้�*มูข้�อมู�ลต์+อจากโหนดทำ�*ก�าหนด 3. การเพื้�*มูข้�อมู�ลทำ�*จ6ดส6ดทำ�าย์ข้องโครงสร�าง

21

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 22: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

การเพื่ "มูข้�อมู�ลที่�"จำ*ดเร "มูต์�นข้องโครงสร�างเป็&นการเพื้�*มูโหนดข้องข้�อมู�ลไป็ย์�งต์�าแหน+งแรก

ข้องโครงสร�างล�งค�ล�สต์� โดย์การเป็ล�*ย์นค+าเร�*มูต์�นให�ช้�)ไป็ย์�งต์�าแหน+งข้องโหนดใหมู+ (NEW Node) ทำ�*สร�างข้#)น และให� Pointer ข้องโหดใหมู+ช้�)ไป็ย์�งต์�าแหน+งเร�*มูต์�นเด�มูแทำน

22

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 23: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

23

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

…..

NEW ค�อ โหนดว$างที่�"ได�จำาก Storage Pool

NEW

START

แสดงการเพื่ "มูข้�อมู�ลที่�"จำ*ดเร "มูต์�นข้องโครงสร�าง

Page 24: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

ข้��นต์อนการเพื่ "มูข้�อมู�ลที่�"ต์�าแหน$งเร "มูต์�นข้องโครงสร�าง

1. ต์รวจสอบ OVERFLOW ถึ�าโหนดใหมู+มู�ค+าเป็&น NULL แสดงว+า OVERFLOW

2. ก�าหนด PTR ให�ช้�)ไป็ทำ�*โหนดข้อง FREE LIST

3.ใส+ข้�อมู�ลใหมู+ลงไป็ในโหนดใหมู+4.ให�โหนดใหมู+ช้�)ไป็ย์�งโหนดเร�*มูต์�นเด�มู

5 . เป็ล�*ย์นต์�าแหน+งเร�*มูต์�นให�ช้�)ไป็ย์�งโหนดใหมู+

24

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 25: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

การเพื่ "มูข้�อมู�ลต์$อจำากโหนดที่�"ก�าหนดเป็&นการแทำรกโหนดข้�อมู�ลใหมู+เข้�าไป็ระหว+าง

โหนดข้�อมู�ล 2 โหนด โดย์การเป็ล�*ย์น Pionter ทำ�*ช้�)โหนดเก+าให�ช้�)ไป็ย์�งต์�าแหน+งข้องโหนดใหมู+ และ ให� Poinnter ข้องโหนดใหมู+ข้�)ไป็ย์�งต์�าแหน+งเด�มูแทำน

25

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 26: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

26

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

NEW

p q

Start

แสดงการเพื่ "มูข้�อมู�ลต์$อจำากโหนดที่�"ก�าหนด

Page 27: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

ข้��นต์อนการเพื่ "มูข้�อมู�ลที่�"ต์�าแหน$งเร "มูต์�นข้องโครงสร�าง

1. ต์รวจสอบ OVERFLOW ถึ�าโหนดใหมู+มู�ค+าเป็&น NULL แสดงว+า OVERFLOW

2. ก�าหนด PTR ให�ช้�)ไป็ทำ�*โหนดข้อง FREE LIST

3. ใส+ข้�อมู�ลใหมู+ลงไป็ในโหนดใหมู+4. ก�าหนดค+าให�โหนดแรก ถึ�า PTR = NULL

ให�ก�าหนดโหนดใหมู+เป็&นจ6ดเร�*มูต์�น ถึ�า PTR <> NULL ให�น�าโหนดใหมู+มูาต์+อ (PTR ช้�)ไป็ทำ�*โหนดใหมู+)

27

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 28: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

การเพื่ "มูข้�อมู�ลเป1นโหนดส*ดที่�ายข้องโครงสร�างเป็&นการน�าโหนดข้�อมู�ลใหมู+มูาต์+อย์�งต์�าแหน+ง

ทำ�าย์ส6ดข้องโครงสร�าง (Pointer ข้องโหนดส6ดทำ�าย์มู�ค+าเป็&น NULL) โดย์การก�าหนดให� Pointer ข้องโหนดข้�อมู�ลส6ดทำ�าย์ ช้�)ไป็ย์�งโหนดใหมู+ และให� Pointer ข้อง โหนดใหมู+มู�ค+าเป็&น NULL แทำน

28

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 29: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

29

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

NEW

p q

Start

NULL

แสดงข้��นต์อนการเพื่ "มูข้�อมู�ลเป1นโหนดส*ดที่�ายข้องโครงสร�าง

Page 30: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

ข้��นต์อนการเพื่ "มูข้�อมู�ลเป1นโหนดส*ดที่�ายข้องโครงสร�าง

1. ต์รวจสอบ OVERFLOW ถึ�าโหนดใหมู+มู�ค+าเป็&น NULL แสดงว+า OVERFLOW

2. ก�าหนด PTR (ทำ�*อย์�+ต์�าแหน+งส6ดทำ�าย์ ) ให�ช้�)ไป็ทำ�*โหนดข้อง FREE LIST

3. ใส+ข้�อมู�ลใหมู+ลงไป็ในโหนดใหมู+ 4 . ก�าหนด PTR ข้องโหนดใหมู+มู�ค+าเป็&นน

NULL

30

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 31: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

การลบข้�อมู�ลจำากโครงสร�างการลบข้�อมู�ลจากโครงสร�าง หมูาย์ถึ#ง การด#ง

เอาโหนดทำ�*ต์�องการลบออกจากล�งค�ล�สต์�ช้6ดเด�มู ด�งน�)น การเป็ล�*ย์นแป็ลงทำ�*เก�ดข้#)นค(อ การเป็ล�*ย์นค+าพื้อย์น�เต์อร�และเมู(*อทำ�าการลบข้�อมู�ลออกจากโครงสร�างแล�วจะต์�องค(นโหนดทำ�*ถึ�กลบให�ก�บ Storage Pool เพื้(*อทำ�*จะได�สามูารถึน�าหน+วย์ความูจ�าส+วนน�)นไป็ใช้�งานต์+อไป็

การลบข้�อมู�ลออกจากโครงสร�างล�งค�ล�สต์� เก�ดข้#)นได�หลาย์ล�กษณะสร6ป็ได�ด�งน�)

1. การลบโหนดแรก 2. การลบโหนดทำ�*อย์�+หล�งโหนดทำ�*ก�าหนด 3. การลบโหนดส6ดทำ�าย์

31

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 32: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

32

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)Sta

rt

p qx

ก ) ก$อนลบข้�อมู�ล

Start

p qx

ข้ ) หล�งการลบข้�อมู�ล

แสดงการลบโหนดออกจำากโครงสร�างข้�อมู�ลล งค�ล สต์�

Page 33: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

33

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

แสดงการลบโหนดและส$งโหนดค�นกล�บ Storage Pool

Start

p qx

Avail

Page 34: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

34

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

ข้��นต์อนการลบโหนดมู�ด�งน�� 1. เก!บค+าต์�าแหน+งและค+าข้อง Pointer ข้อง

โหนดทำ�*ต์�องการล 2. ก�าหนดค+าข้อง Pointer ข้องโหนดทำ�*

ต์�องการลบ ไป็ย์�งโหนดก+อนหน�าน�)น 3. ก�าหนดต์�าแหน+งข้องโหนดทำ�*ต์�องการลบ

ค(นกล�บไป็ย์�ง Storage Pool

Page 35: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

ประเภที่ข้องโครงสร�างข้�อมู�ลล งค�ล สต์�โครงสร�างข้�อมู�ลล�งค�ล�สต์� แบ+งเป็&น 2 กล6+มู

ใหญ+ ๆ ได�แก+ 1. โครงสร�างข้�อมู�ลล�งค�ล�สต์�เด�*ย์ว (Singly

Linked List : SLL) 2. โครงสร�างข้�อมู�ลล�งค�ล�สต์�ค�+ (Doubly

Linked List : DLL)

35

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 36: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

โครงสร�างข้�อมู�ลล งค�ล สต์�เด�"ยว (SLL)แบ+งออกเป็&น 2 ป็ระเภทำ1. โครงสร�างข้�อมู�ลล�งค�ล�สต์�แบบ Ordinary

Singly Linked List ค(อ โครงสร�างข้�อมู�ลล�งค�ล�สต์�ทำ�*มู�ล�กษณะเหมู(อนก�บโครงสร�างข้�อมู�ลล�งค�ล�สต์�ทำ�*กล+าวมูาแล�วต์�)งแต์+ต์�น

2. โครงสร�างข้�อมู�ลล�งค�ล�สต์�แบบ Circular Singly Linked List (CLL) มู�ล�กษณะคล�าย์ก�บแบบ SLL ทำ�*วไป็ เพื้�ย์งแต์+พื้อย์น�เต์อร�สามูารถึช้�)กล�บมูาย์�งต์�าแหน+งเร�*มูต์�นข้องโครงสร�างได� โดย์ใช้�พื้อย์น�เต์อร�ข้องโหนดส6ดทำ�าย์ในโครงสร�างช้�)ไป็ย์�งโหนดแรก ทำ�าให�โครงสร�างข้�อมู�ลมู�ล�กษณะเป็&นวงกลมู

36

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 37: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

37

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)STA

RT

…..

HEAD

แสดงล�กษณะข้อง Circular Singly Linked List

แสดงล�กษณะข้อง Empty Circular Singly Linked List

Page 38: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

โครงสร�างข้�อมู�ลล งค�ล สต์�ค�$ (Doubly Linked List)

โครงสร�างข้�อมู�ลล�งค�ล�สต์�ค�+ (Doubly Linked List) เป็&นโครงสร�างทำ�*แต์+ละโหนดข้�อมู�ลสามูารถึช้�)ต์�าแหน+งโหนดข้�อมู�ลถึ�ดไป็ได� 2 ทำ�ศัทำาง (มู�พื้อย์น�เต์อร�ช้�)ต์�าแหน+งอย์�+สองทำ�ศัทำาง ) โดย์มู�พื้อย์น�เต์อร�อย์�+ 2 ต์�ว ค(อ พื้อย์น�เต์อร� LLINK ทำ�าหน�าทำ�*ช้�)ไป็ย์�งโหนดด�านซึ่�าย์ข้องโหนดข้�อมู�ลน�)น ๆ และ พื้อย์น�เต์อร� RLINK ทำ�าหน�าทำ�*ช้�)ไป็ย์�งโหนดด�านข้วาข้องโหนดข้�อมู�ลน�)น ๆ

38

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

LLINK

DATA RLINK

Page 39: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

การใช้�งานข้องโหนดข้�อมู�ลแบบล�งค�ล�สต์�ค�+ ค(อ พื้อย์น�เต์อร� 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)

Page 40: โครงสร้างข้อมูลแบบลิงค์ลิสต์ 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)

Page 41: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked 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

Page 42: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

42

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

p q

n

แสดงการเพื่ "มูโหนดข้�อมู�ลเข้�าส�$โครงสร�าง Ordinary DLL

Page 43: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

ข้�)นต์อนการเพื้�*มูโหนดข้�อมู�ลมู�ด�งน�) 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)

Page 44: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

ข้�)นต์อนการลบโหนดมู�ด�งน�) 1. ต์รวจสอบว+ามู�ข้�อมู�ลหร(อไมู+ (ถึ�าโหนด r

และ l มู�ค+าเป็&น start แสดงว+าไมู+มู�ข้�อมู�ล ) 2. ถึ�ามู�ข้�อมู�ล ให�ก�าหนดพื้อย์น�เต์อร�ข้อง p

และ qp -> r = d -> rq -> l = d -> l

3. ค(นโหนดทำ�*ลบให�ก�บระบบ

44

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 45: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

โครงสร�างข้�อมู�ลล งค�ล สต์�แบบ Circularly DLLโครงสร�างข้�อมู�ลล�งค�ล�สต์�แบบ Circularly

DLL ค(อ ล�กษณะข้อง Doubly linked list ทำ�*มู� Link ทำางซึ่�าย์ (LLINK) ข้องโหนดซึ่�าย์มู(อส6ดเก!บต์�าแหน+งทำ�*อย์�+ข้องโหนดทำ�*อย์�+ทำางข้วามู(อส6ดและ Link ทำางด�านข้วา (RLINK) ข้องโหนดข้วามู(อส6ดก!จะเก!บต์�าแหน+งทำ�*อย์�+ข้องโหนดทำ�*อย์�+ทำางซึ่�าย์มู(อส6ด

45

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

Page 46: โครงสร้างข้อมูลแบบลิงค์ลิสต์ Linked List

46

Charter 4

โครงสร�างข้�อมู�ลล งค�ล สต์� โครงสร�างข้�อมู�ลล งค�ล สต์� (Linked (Linked List)List)

LLINK

DATA RLINK

LLINK

DATA RLINK

LLINK

DATA RLINK

Start

NULL

แสดงโครงสร�างข้�อมู�ลล งค�ล สต์�แบบ Circularly DLL