46
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโ Linked List 1

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

Linked List

1

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

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

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

2

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

ล�กษณะข้องล�งค�ล�สต์�1 .เป็�นโครงสร�างข้�อมู�ลชน�ดไมู�เป็�นเช�งเส�น (Non

Linear Structure) ค(อ จ�ดเก บข�อมู�ลในหน+วย์ความูจ�าแบบไมู+ต+อเน(*องก�น การเข�ย์นโป็รแกรมูจะใช้�พื้อย์เตอร� (Pointer)

2. ไมู�จำ!าเป็�นต์�องระบ"จำ!านวนข้องข้�อมู�ลที่%&จำ�ดเก'บ เน(*องจากสามูารถึขอหน+วย์ความูจ�าใหมู+ได� เมู(*อต�องการจ�ดเก บข�อมู�ลเพื้�*มู จ�าทำ�าให�ไมู+ต�องระบ4จ�านวนข�อมู�ลทำ�*จะจ�ดเก บไว�ต�)งแต+ตอนก�าหนดต�วแป็ร

3. ข้นาดข้องหน�วยความูจำ!าที่%&ใช�เที่�าก�บข้�อมู�ลที่%&จำ�ดเก'บ ค(อ หน+วย์ความูจ�าทำ�*ใช้�งานจะพื้อด�ก�บข�อมู�ลเพื้ราะไมู+ได�ระบ4ขนาดไว�ก+อนจ�าทำ�าให�ไมู+มู�หน+วย์ความูจ�าทำ�*จองไว�เหล(อเหมู(อนการใช้�อาร(เรย์�

4. ต์�องมู%พอยเต์อร�ช%,โหนดแรก หากไมู+มู�พื้อย์เอตร�ทำ�จ�าต�าแหน+งทำ�*อย์�+ของโหนดแรกแล�วก จะไมู+สามูารถึเข�าถึ#งข�อมู�ลทำ�*จ�ดเก บในโหนดต+างๆ ได�

3

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

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

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

ต์�วช%, (Pointer) บางคร�,งเร%ยก ล�งค� (Link) หร-อ ต์�วอ�างอ�ง (Reference) ค-อ การก!าหนดต์�วแป็ร (Variable) เพ-&อเก'บต์!าแหน�งข้องต์�วแป็รอ-&นๆ หร-อโครงสร�างข้�อมู�ลอ-&น ๆ ที่%&ใช�อย��ในโป็รแกรมู

4

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

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

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

5

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

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

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

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

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

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

6

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

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

ส�วนที่%&เก'บข้�อมู�ล ส�วนที่%&เก'บต์!าแหน�งที่%&อย��ข้องโหนดถั�ดไป็

DATA LINK

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

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

7

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

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

8

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

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

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

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

9

การแที่นล�งค�ล�สต์�ในพ-,นที่%&หน�วยความูจำ!าแบบหน0&ง

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

10

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

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

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

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

11

PTR

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

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

12

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

การเข�าถึ#งในโครงสร�างเร�ย์กว+า การที่!า Traversing มู�ข�)นตอนด�งต+อไป็น�)

ก�าหนดให� DATA เป็&นโครงสร�างข�อมู�ลล�งค�ล�สต� และพื้อย์น�เตอร� PTR ทำ�าหน�าทำ�*ช้�)โหนดทำ�*ก�าล�งด�าเน�นการ Process อย์�+ในขณะน�)น (Current Node)

1. ก�าหนดค+าเร�*มูต�นให�ก�บพื้อย์น�เตอร� PTR.2. การวนรอบด�าเน�นการ Process ข�อมู�ล3. Apply Process to DATA [PTR]4. ป็ล�*ย์นค+าพื้อย์น�เตอร� PTR ให�ช้�)โหนดถึ�ดไป็5. เสร จส�)นข�)นตอน

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

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

13

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 ;

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

14

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

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

Storage PoolStorage Pool หร(อ Free List หมูาย์ถึ#ง

เน()อทำ�*ว+างในหน+วย์ความูจ�า มู�ล�กษณะเป็&นโหนดเก บอย์�+ในโครงสร�างข�อมู�ลล�งค�ล�สต� หร(ออาจเร�ย์กได�ว+าเป็&น Free Stack ล�กษณะการด�าเน�นการเหมู(อนก�บโครงสร�างข�อมู�ลสแต ก เมู(*อมู�การเพื้�*มูสมูาช้�กใหมู+ในโครงสร�างข�อมู�ลล�งค�ล�สต�จะน�าโหนดว+าง 1 โหนดออกมูาจาก Free List (เป็&นโหนดแรกใน Free List) จากน�)นใส+ข�อมู�ลลงไป็ในส+วนของ Data Field หล�งจากน�)น น�าโหนดด�งกล+าวเช้(*อมูโย์งเข�าไป็ไว�ในโครงสร�างข�อมู�ลทำ�*ต�องการ และหากมู�การลบสมูาช้�กต�วใดต�วหน#*งออกจากโครงสร�างจะต�องน�าโหนดทำ�*ถึ�กลบน�)ใส+ค(นใน Free List ไว�เป็&นโหนดแรกใน Free List เสมูอ

15

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

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

16

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

START

AVAIL

DATA LIST

FREE LIST

p q

P P

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

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

17

Charter 4

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

AVAIL

NULL

AVAIL

AVAIL

NULL

NULL

NEW

NEW

NEW

…..

…..

…..

Step (a) : NEW Avail

Step (B) : Avail Link(Avail)

Step (C) : NEW NULL

ข้�,นต์อนการข้อ New Node (Get Node)

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

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

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

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

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

โครงสร�าง

18

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

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

19

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

…..

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

NEW

START

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

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

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

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

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

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

20

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

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

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

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

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

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

โครงสร�าง

21

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

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

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

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

22

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

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

23

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

…..

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

NEW

START

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

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

ข้�,นต์อนการเพ�&มูข้�อมู�ลที่%&ต์!าแหน�งเร�&มูต์�นข้องโครงสร�าง

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

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

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

24

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

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

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

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

25

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

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

26

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

NEW

p q

Start

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

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

ข้�,นต์อนการเพ�&มูข้�อมู�ลที่%&ต์!าแหน�งเร�&มูต์�นข้องโครงสร�าง

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

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

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

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

27

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

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

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

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

28

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

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

29

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

NEW

p q

Start

NULL

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

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

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

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

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

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

NULL

30

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

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

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

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

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

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

31

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

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

32

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

rt

p qx

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

Start

p qx

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

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

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

33

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

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

Start

p qx

Avail

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

34

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

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

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

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

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

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

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

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

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

Linked List : DLL)

35

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

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

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

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

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

36

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

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

37

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

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

LLINK

DATA RLINK

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

การใช้�งานของโหนดข�อมู�ลแบบล�งค�ล�สต�ค�+ ค(อ พื้อย์น�เตอร� LLINK จะช้�)ไป็ย์�งโหนดด�านซึ่�าย์ของโหนดข�อมู�ลน�)น ๆ โดย์พื้อย์�เตอร�ทำ�*โหนดข�อมู�ลส4ดทำ�าย์ทำางด�านซึ่�าย์ (LLINK ต�วส4ดทำ�าย์) จะมู�ค+าเป็&น NULL และ พื้อย์น�เตอร� RLINK ทำ�าหน�าทำ�*ช้�)ไป็ย์�งโหนดด�านขวาของโหนดข�อมู�ลน�)น ๆ โดย์พื้อย์�เตอร�ทำ�*โหนดข�อมู�ลส4ดทำ�าย์ทำางด�านขวา (RLINK ต�วส4ดทำ�าย์) จะมู�ค+าเป็&น NULL เช้+นก�น

39

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

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

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

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

DLL ค(อ ล�กษณะของโครงสร�างล�งค�ล�สต�ทำ�*ส+วนของพื้อย์น�เตอร�ทำ�* link ทำางซึ่�าย์ (LLINK) ของโหนดซึ่�าย์มู(อส4ดและพื้อย์น�เตอร�ทำ�* link ทำางด�านขวาส4ดของโครงสร�าง (RLINK) มู�ค+าเป็&น NULL ทำ�)งค�+ เพื้(*อแสดงว+าเป็&นโหนดส4ดทำ�าย์ของโครงสร�างทำ�*ป็ลาย์ทำ�)งสองด�าน

41

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

LLINK

DATA

RLINK

LLINK

DATA

RLINK

LLINK

DATA

RLINK

HEAD

NULL

NULL

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

42

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

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

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

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

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

qp -> r = d -> rq -> l = d -> l3. ค(นโหนดทำ�*ลบให�ก�บระบบ

44

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

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

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

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

45

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

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

46

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

LLINK

DATA RLINK

LLINK

DATA RLINK

LLINK

DATA RLINK

Start

NULL

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