Linked Lists
-
Upload
alfonso-roberts -
Category
Documents
-
view
53 -
download
2
description
Transcript of Linked Lists
![Page 1: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/1.jpg)
Linked Lists
บทท�� 4 รายการเชื่��อมโยงข้�อม�ล
![Page 2: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/2.jpg)
วั�ตถุ�ประสงค์�เพื่��อ• เข้�าใจหลักการแลัะแนวคิ�ดข้องลั�สต์�แบบเชิ�งเส�น• อธิ�บายการด�าเน�นงานพื้��นฐานข้องลั�สต์�ได�• เปร#ยบเที#ยบโคิรงสร�างการที�างานระหว&างอาร�เรย�กบลั�งก�ลั�สต์�ได�• อธิ�บายโคิรงสร�างข้�อมู(ลัแบบลั�งก�ลั�สต์�ได�• เข้�าใจข้�นต์อนการที�างานข้องอลักอร�ที)มูต์&างๆ ที#+ใชิ�งานบนลั�งก�ลั�สต์�
• บอกคิ,ณสมูบต์�เพื้�+มูเต์�มูข้องเซอร�คิ(ลัาร�ลั�งก�ลั�สต์� ดบเบ�ลัลั�งก�ลั� สต์� เมู�อเที#ยบกบซ�งเก�ลัลั�งก�ลั�สต์�ได�
• สามูารถน�าเทีคิน�คิว�ธิ#การข้องลั�งก�ลั�สต์�น�าไปประย,กต์�ใชิ�งานได�อย&างเหมูาะสมู
![Page 3: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/3.jpg)
หั�วัข้�อท��บรรยาย• แนวคิ�ดพื้��นฐานเก#+ยวกบลั�สต์�แบบเชิ�งเส�น• การด�าเน�นงานพื้��นฐานข้องลั�สต์�• แนวคิ�ดข้องลั�งก�ลั�สต์�• ลั�งก�ลั�สต์�คิ�ออะไร• ประเภทีข้องลั�งก�ลั�สต์�• โคิรงสร�างข้�อมู(ลัแบบลั�งก�ลั�สต์�
![Page 4: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/4.jpg)
หั�วัข้�อท��บรรยาย (ต อ)
• คิ,ณสมูบต์�ข้องลั�งก�ลั�สต์�• อลักอร�ที)มูข้องลั�งก�ลั�สต์�• ลั�งก�ลั�สต์�ชิน�ดอ�+นๆ• ต์วอย&างการสร�างลั�งก�ลั�สต์�• การน�าลั�งก�ลั�สต์�ไปประย,กต์�ใชิ�งาน
![Page 5: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/5.jpg)
ล!สต� (Lists) หัร�อ รายการ
![Page 6: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/6.jpg)
แนวัค์!ดพื่�%นฐานเก��ยวัก�บล!สต�แบบเชื่!งเส�น
• คิ,ณสมูบต์�เร#ยงลั�าดบข้องข้�อมู(ลัภายในลั�สต์�ที#+มู#ลักษณะเป2นลั�าดบต์&อเน�+องกน
• สมูาชิ�กแต์&ลัะต์วจะเชิ�+อมูโยงกบสมูาชิ�กต์วถดไปในลักษณะเป2นรายการต์&อเน�+องกนไป
![Page 7: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/7.jpg)
ล!สต�แบบท��วัไป• สามูารถแทีรกหร�อลับรายการลั�สต์� ณ ต์�าแหน&ง
ใดๆ ก3ได� โดยปราศจากข้�อจ�ากดในการด�าเน�นงานภายในลั�สต์�
• แบ&งได� 2 ประเภที– ลั�สต์�แบบส,&มู ซ)+งข้�อมู(ลัภายในลั�สต์�จะไมู&เร#ยงลั�าดบ– ลั�สต์�แบบเร#ยงลั�าดบ ข้�อมู(ลัภายในลั�สต์�ถ(กจดเร#ยงอย&างเหมูาะสมูด�วยคิ#ย�
![Page 8: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/8.jpg)
ล!สต�แบบม�ข้�อจำ)าก�ด• ข้�อมู(ลัภายในลั�สต์�แบบมู#ข้�อจ�ากด ไมู&ว&าจะเพื้�+มูหร�อลับข้�อมู(ลัจะต์�องกระที�าที#+จ,ดปลัายด�านใดด�านหน)+งข้องลั�สต์�เที&าน�น
• ต์วอย&างข้องลั�สต์�ประเภทีน#� คิ�อ FIFO, LIFO
![Page 9: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/9.jpg)
การด)าเน!นงานพื่�%นฐานข้องล!สต�• การแทีรก (Insertion)• การลับ (Deletion)• การอ&าน (Retrieval)• การที&องเข้�าไปในลั�สต์� (Traversal)
![Page 10: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/10.jpg)
การแทรก• ยกต์วอย&างการแทีรกลั�สต์�แบบเร#ยงลั�าดบ จะใชิ�คิ#ย�เป2นต์วระบ,ข้�อมู(ลั
![Page 11: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/11.jpg)
การลบ• การลับสมูาชิ�กจะที�าการคิ�นหาต์�าแหน&งข้�อมู(ลัที#+
ต์�องการลับ เมู�+อพื้บจ)งน�าสมูาชิ�กต์�าแหน&งน�นออกจากลั�สต์�
![Page 12: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/12.jpg)
การอ าน• ต์�องที�าการคิ�นหาต์�าแหน&งข้�อมู(ลัที#+ต์�องการอ&านจากน�นจ)งที�าการอ&านหร�อด)งข้�อมู(ลัออกมูาใชิ�งานโดยไมู&มู#การเปลั#+ยนแปงข้�อมู(ลัภายในลั�สต์�
![Page 13: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/13.jpg)
การท องเข้�าไปในล!สต�• จะที�าการเด�นที&องเข้�าไปยงแต์&ลัะสมูาชิ�กต์ามูลั�าดบ
ภายในลั�สต์� ซ)+งมูกใชิ�อลักอร�ที)มูแบบลั(ปในการที&องเข้�าไปในลั�สต์�มูากกว&าที#+ด�าเน�นการด�วยว�ธิ#การคิ�นหา
• ส�าหรบการประมูวลัผลัในแต์&ลัะสมูาชิ�กภายในลั(ป จะด�าเน�นการจนกระที+งออกจากลั(ป น+นหมูายคิวามู
ว&าที,กๆ สมูาชิ�กภายในลั�สต์�ได�ถ(กประมูวลัผลัเร#ยบร�อยแลั�ว
![Page 14: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/14.jpg)
แนวัค์!ดข้องล!งก�ล!สต�• ที�งอาร�เรย�แลัะลั�งก�ลั�สต์�มู#คิ,ณสมูบต์�เป2นรายการต์&อเน�+องหร�อลั�สต์�น+นเอง
• ข้�อมู(ลัภายในหน&วยคิวามูจ�าข้องลั�งก�ลั�สต์�จะไมู&ได�อย(&ในลั�าดบต์&อ เน�+องเหมู�อนกบอาร�เรย� แต์&จะถ(กเชิ�+อมูโยงด�วยลั�งก�หร�อพื้อยน�
เต์อร�• สมูาชิ�กภายในลั�งก�ลั�สต์�แต์&ลัะต์วจะบรรจ,แอดเดรสเพื้�+อชิ#�ไปยง
ต์�าแหน&งโหนดต์วถดไปซ)+งแต์&ลัะโหนดจะบรรจ,ข้�อมู(ลั 2 ส&วน คิ�อ– ข้�อมู(ลั (Data) จดเก3บสารสนเทีศที#+สามูารถน�าไปใชิ�ประโยชิน�– ลั�งก� (Link) ใชิ�ส�าหรบเชิ�+อมูโยงข้�อมู(ลั เร�+มูจากเฮดพื้อยน�เต์อร�ชิ#�ไปยง
ต์�าแหน&งโหนดแรกข้องลั�สต์� จากน�นลั�งก�แต์&ลัะโหนดก3จะเชิ�+อมูโยงไปยงโหนดต์&อไป
![Page 15: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/15.jpg)
อาร�เรย� VS ล!งก�ล!สต�
![Page 16: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/16.jpg)
ต�วัอย างการแทนท��ล!งก�ล!สต�ในหัน วัยค์วัามจำ)า
![Page 17: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/17.jpg)
โค์รงสร�างข้�อม�ลแบบล!งก�ล!สต�• โคิรงสร�างโหนดส&วนหว• โคิรงสร�างโหนดข้�อมู(ลั
![Page 18: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/18.jpg)
โค์รงสร�างโหันดส วันหั�วั• มู#หน)+งพื้อยน�เต์อร�ที#+ชิ#�ไปยงลั�สต์� คิ�อ เฮดพื้อยน�เต์อร�
• เก�ดข้)�นหลังจากที#+ได� Create List ข้)�นมูา• บรรจ,ข้�อมู(ลัที#+เก#+ยวกบลั�สต์� เร#ยกว&า Metadata
![Page 19: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/19.jpg)
โค์รงสร�างโหันดข้�อม�ล• ประกอบด�วยส&วนข้�อมู(ลัแลัะลั�งก�• ชิน�ดข้�อมู(ลัข้องลั�สต์�จะข้)�นอย(&กบการน�าไปประย,กต์�ใชิ�
![Page 20: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/20.jpg)
ค์�ณสมบ�ต!ข้องล!งก�ล!สต�• ลั�งก�ลั�สต์�จะใชิ�เฮดพื้อยน�เต์อร�ชิ#�ไปยงโหนดแรก
ข้องลั�สต์� ในข้ณะที#+พื้อยน�เต์อร�หร�อลั�งก�ข้องแต์&ลัะ โหนดจะเชิ�+อมูโยงลั�งก�ไปยงโหนดต์วถดไป โดย
โหนดต์วส,ดที�ายที#+ไมู&มู#ลั�งก�ให�เชิ�+อมูต์&อจะถ(กก�าหนด คิ&าให�เป2น null
• โหนดข้�อมู(ลัจะประกอบด�วย Data แลัะ Link• ไมู&มู#คิวามูสมูพื้นธิ�ทีางกายภาพื้ระหว&างโหนด• ข้�อมู(ลัที#+จดเก3บภายในหน&วยคิวามูจ�าไมู&จ�าเป2นต์�องอย(&ต์�ดกน
• กรณ#เฮดพื้อยน�เต์อร�ไมู&มู#ต์วชิ#�หร�อไมู&มู#สมูาชิ�ก จะ ถ(กก�าหนดเป2น null คิ�อลั�สต์�ว&างน+นเอง
![Page 21: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/21.jpg)
การสร�างล!สต�ด�วัยล!งก�ล!สต�• ลั�งก�ลั�สต์�จดเป2นโคิรงสร�างที#+ง&ายต์&อการเพื้�+มูแลัะ
ลับข้�อมู(ลั ไมู&ว&าจะกระที�าที#+ส&วนหน�า ส&วนหลัง หร�อส&วนกลัางข้องข้�อมู(ลั
![Page 22: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/22.jpg)
การเพื่!�มและลบข้�อม�ลภายในล!งก�ล!สต�
![Page 23: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/23.jpg)
ข้�อด�ข้องล!งก�ล!สต�• เป2นโคิรงสร�างที#+ง&ายต์&อการเพื้�+มูหร�อลับข้�อมู(ลั• ไมู&จ�าเป2นต์�องข้ยบอ�ลั�เมูนต์�ข้องลั�สต์�ไปข้�างหน�า
เพื้�+อให�เก�ดพื้��นที#+ว&าง ในกรณ#ที#+มู#การลับอ�ลั�เมูนต์�ต์รงส&วนหน�าหร�อส&วนกลัางข้องลั�สต์�เชิ&นเด#ยวกบอาร�เรย�
• ใชิ�พื้��นที#+เน��อที#+หน&วยคิวามูจ�าได�เต์3มูประส�ทีธิ�ภาพื้ เน�+องจากหากข้�อมู(ลัภายในลั�สต์�มู#น�อยก3ใชิ�น�อย ซ)+ง
ผ�ดกบอาร�เรย�ที#+ต์�องส(ญเส#ยพื้��นที#+ไปในทีนที# ถ)งแมู�จะไมู&มู#ข้�อมู(ลัภายในลั�สต์�ก3ต์ามู
![Page 24: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/24.jpg)
อ�ลกอร!ท-มข้องล!งก�ล!สต�• การสร�างลั�สต์� (Create List)• การเพื้�+มูข้�อมู(ลัลังในลั�งก�ลั�สต์� (Insert Node)• การลับข้�อมู(ลัออกจากลั�งก�ลั�สต์� (Delete Node)• การคิ�นหาข้�อมู(ลัในลั�งก�ลั�สต์� (Search List)• การด)งข้�อมู(ลัจากลั�งก�ลั�สต์� (Retrieve Node)• ลั�สต์�ว&าง (Empty List)• ลั�สต์�เต์3มู (Full List)• จ�านวนสมูาชิ�กในลั�สต์� (List Count)• การที&องเข้�าไปในลั�สต์� (Traverse List)• การยกเลั�กการใชิ�งานลั�สต์� (Destroy List)
![Page 25: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/25.jpg)
การสร�างล!สต� (Create List)
• เป2นฟั9งก�ชิ +นการก�าหนดโคิรงสร�างโหนดส&วนหว แลัะก�าหนดคิ&าเร�+มูต์�นให�กบ Metadata ส�าหรบลั�สต์�
![Page 26: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/26.jpg)
อ�ลกอร!ท-มการสร�างล!สต�Algorithm createList (list)Initializes metedata for list.
Pre list is metadata structure passed by reference
Post metedata initialized1 allocate (list)2 set list head to null3 set list count to 0end createList
![Page 27: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/27.jpg)
การเพื่!�มข้�อม�ลลงในล!งก�ล!สต� (Insert Node)
• เป2นฟั9งก�ชิ +นส�าหรบแทีรกโหนดเพื้�+มูเข้�าไปในลั�สต์�• ต์�องร( �ว&าโหนดก&อนหน�า (Predecessor) ข้องโหนด
ใหมู&ที#+แทีรกคิ�อโหนดใด หลังจากน�นที�าการแทีรกข้�อมู(ลัเพื้�+มูต์ามูข้�นต์อนดงน#�– จดสรรหน&วยคิวามูจ�าส�าหรบโหนดใหมู&พื้ร�อมูกบข้�อมู(ลั– ก�าหนดต์วชิ#�ให�กบลั�งก�ฟั:ลัด�ข้องโหนดใหมู&– น�าต์วชิ#�ที#+อย(&ก&อนหน�าโหนดใหมู&ชิ#�มูายงโหนดใหมู&
• ลั�งก�ข้องโหนดใหมู&จะชิ#�ไปยงโหนดข้�างหลัง(Successor)
![Page 28: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/28.jpg)
การแทรกโหันดม� 4 ร�ปแบบ• การแทีรกโหนดในลั�สต์�ว&าง• การแทีรกโหนดที#+ต์�าแหน&งแรก• การแทีรกโหนดต์รงส&วนกลัางข้องลั�สต์�• การแทีรกโหนดที#+ที�ายลั�สต์�
![Page 29: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/29.jpg)
การแทรกโหันดในล!สต�วั าง
![Page 30: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/30.jpg)
การแทรกโหันดท��ต)าแหัน งแรก
![Page 31: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/31.jpg)
การแทรกโหันดตรงส วันกลางข้องล!สต�
![Page 32: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/32.jpg)
การแทรกโหันดท��ท�ายล!สต�
![Page 33: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/33.jpg)
อ�ลกอร!ท-มการแทรกโหันดAlgorithm insertNode (list, pPre, dataIn)Inserts data into a new node in the list.
Pre list is metadata structure to a valid list pPre is pointer to data’s logical predecessor dataIn contains data to be inserted
Post data have been inserted in sequenceReturn True if successful. False if memory overflow
1 allocate (pNew)2 set pNew data to dataIn3 if (pPre null) Adding before first node or to empty list. 1 set pNew link to list head 2 set list head to pNew4 else Adding in middle or at end. 1 set pNew link to pPre link 2 set pPre link to pNew5 end if6 return trueend insertnode
![Page 34: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/34.jpg)
การลบข้�อม�ลออกจำากล!งก�ล!สต� (Delete Node)
• เป2นการน�าพื้��นที#+โหนดที#+ถ(กลับส&งคิ�นแก&หน&วยคิวามูจ�าระบบ
• ปรบเปลั#+ยนต์วชิ#�ใหมู&• ข้�นต์อนการลับโหนดมู#ดงน#�– คิ�นหาต์�าแหน&งข้องโหนดที#+ต์�องการลับ (pLoc) ให�พื้บก&อน– ที�าให�ทีราบต์�าแหน&งข้อง Predecessor (pPre)– ก�าหนดลั�งก�ฟั:ลัด�ข้องโหนด Predecessor ชิ#�ไปยงโหนด
Successor ซ)+งเป2นโหนดที#+อย(&ด�านหลังข้องโหนดที#+ถ(กลับ– คิ�นพื้��นที#+หน&วยจ�าแก&ระบบ
![Page 35: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/35.jpg)
การลบโหันดม� 2 ร�ปแบบ• การลับโหนดที#+ต์�าแหน&งแรก• การลับโหนดโดยที+วไป
![Page 36: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/36.jpg)
การลบโหันดท��ต)าแหัน งแรก
![Page 37: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/37.jpg)
การลบโหันดโดยท��วัไป
![Page 38: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/38.jpg)
อ�ลกอร!ท-มการลบโหันดAlgorithm deleteNode (list, pPre, pLoc, dataOut)Delete data from list & returns it to calling module.
Pre list is metadata structure to a valid list pPre is pointer to predecessor node pLoc is a pointer to predecessor node pLoc is a pointer to node to be deleted
dataOut is variable to receive deleted dataPost data have been deleted and returned to caller
1 move pLoc data to dataOut2 if (pPre null) Deleting first node 1 set list head to pLoc link3 else Deleting other nodes 1 set pPre link to pLoc link4 end if5 recycle (pLoc) end deleteNode
![Page 39: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/39.jpg)
การค์�นหัาข้�อม�ลในล!งก�ล!สต� (Search List)
• เป2นฟั9งก�ชิ +นที#+ใชิ�ส�าหรบคิ�นหาข้�อมู(ลัภายในลั�สต์�• สามูารถคิ�นพื้บได�จากอลักอร�ที)มูที#+ใชิ�งานร(ปแบบ
ต์&างๆ เชิ&น การแทีรกโหนด การลับโหนด การด)งข้�อมู(ลั
• ใชิ�ว�ธิ#การคิ�นหาข้�อมู(ลัแบบ Sequential Search หร�อเร#ยกอ#กอย&างหน)+งว&า Ordered List Search
• หลักการคิ�นหาข้�อมู(ลัจะใชิ�คิ#ย�เป2นต์วคิ�นหาdata key field1 field2 : fieldNend data
![Page 40: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/40.jpg)
ตารางแสดงผลล�พื่ธ์�การค์�นหัาข้�อม�ลภายในล!สต�
เง��อนไข้(Conditions)
ต)าแหัน งต�วัก อนหัน�า
(pPre)
ต)าแหัน งท��ค์�นหัา (pLoc)
ร�เท!ร�นค์ า(Return)
Target < first node Null First node FalseTarget = first node Null First node TrueFirst < target < last Lastest node < target First node > target FalseTarget = middle node Node’s predecessor Equal node TrueTarget = last node Last’s predecessor Last node TrueTarget > last node Last node Null False
![Page 41: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/41.jpg)
ต�วัอย างการค์�นหัาข้�อม�ลในล!สต�แบบเร�ยงล)าด�บ
![Page 42: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/42.jpg)
อ�ลกอร!ท-มการค์�นหัาข้�อม�ลAlgorithm searchList (list, pPre, pLoc, target)Searches list and passes back address of node containing target and its logical predecessor.
Pre list is metadata structure to a valid list pPre is pointer variable for predecessor pLoc is pointer variable for current node target is the key being sought
Post pLoc points to first node with equal / greather key –or- null if target > key of last node pPre points to largest node smaller than key -or- null if target < key of first node
Return true if found, false if not found
![Page 43: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/43.jpg)
อ�ลกอร!ท-มการค์�นหัาข้�อม�ล (ต อ)1 set pPre to null2 set pLoc to list head3 loop (pLoc not null AND target > pLoc key)
1 set pPre to pLoc2 set pLoc to pLoc link
4 end loop5 if (pLoc null)
set return value1 set found to false
6 else1 if (target equal pLoc key)
1 set found to true2 else
1 set found to false3 end if
7 end if8 return foundend searchList
![Page 44: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/44.jpg)
การด-งข้�อม�ลจำากล!งก�ล!สต� (Retrieve Node)
• เป2นการด)งข้�อมู(ลัออกจากโหนดเพื้�+อน�าออกมูาใชิ�งาน
• เร�+มูต์�นด�วยการคิ�นหาโหนดจากต์�าแหน&งข้�อมู(ลัที#+ต์�องการ
• ถ�าพื้บจะที�าการเคิลั�+อนย�ายข้�อมู(ลัไปยงพื้��นที#+ เอาต์�พื้,ต์ในส&วนข้องโมูด(ลัที#+เร#ยกใชิ�งาน แลัะร#เที�ร�น
คิ&าต์รรกะเป2นจร�ง• ถ�าไมู&พื้บก3จะร#เที�ร�นคิ&าต์รรกะเป2นเที3จกลับไป
![Page 45: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/45.jpg)
อ�ลกอร!ท-มการด-งข้�อม�ลAlgorithm retrieveNode (list, key, dataOut)Retrieves data from a list.
Pre list is metadata structure to a valid list Key is target of data to be retrieved dataOut is
variable to receive dataPost data placed in dataOut -or- error returned if
not foundReturn true if successful, false if data not found
1 set found to searchList (list, pPre, pLoc, key)2 if (found)
1 move pLoc data to dataOut3 end if4 return foundend retrieveNode
![Page 46: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/46.jpg)
ล!สต�วั าง (Empty List)
• เป2นฟั9งก�ชิ +นที#+ใชิ�ต์รวจสอบว&าภายในลั�สต์�ว&างหร�อไมู&• เป2นโมูด(ลัแบบง&ายที#+ร #เที�ร�นคิ&าต์รรกะ ณ ข้ณะน�นกลับไป
• ร#เที�ร�นคิ&าต์รรกะเป2นจร�งกลับไปเมู�+อลั�สต์�ว&างในทีางต์รงกนข้�ามูก3จะร#เที�ร�นคิ&าต์รรกะเที3จกลับไป
![Page 47: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/47.jpg)
อ�ลกอร!ท-มล!สต�วั างAlgorithm emptyList (list)Return Boolean indicating whether the list is empty.
Pre list is metadata structure to a valid listReturn true if list empty, false if list contains
data1 if (list count equal 0)
1 return true2 else
1 return falseend emptyList
![Page 48: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/48.jpg)
ล!สต�เต0ม (Full List)
• เป2นฟั9งก�ชิ +นที#+ใชิ�ต์รวจสอบว&าภายในลั�สต์�น�นเต์3มูหร�อไมู&
• จดเป2นโมูด(ลัแบบง&ายเชิ&นกน ด�วยการร#เที�ร�นคิ&า ต์รรกะในข้ณะน�นกลับไป
• แต์&บางที#อาจไมู&จ�าเป2นต์�องใชิ� โดยเฉพื้าะในภาษา C เน�+องจากลั�งก�ลั�สต์�ใชิ�หน&วยคิวามูจ�าแบบไดนามู�ก
![Page 49: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/49.jpg)
อ�ลกอร!ท-มล!สต�เต0มAlgorithm fullList (list)Returns Boolean indicating whether or not the list is full.
Pre list is metadata structure to a valid listReturn false if room for new node; true if
memory full1 if (memory full)
1 return true2 else
1 return false3 end if4 return trueend fullList
![Page 50: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/50.jpg)
จำ)านวันสมาชื่!กในล!สต� (List Count)
• เป2นฟั9งก�ชิ +นที#+ภายในโมูด(ลัจะมู#เพื้#ยงประโยคิคิ�าส+ง เด#ยวเที&าน�น
• แจ�งจ�านวนสมูาชิ�กหร�อจ�านวนอ�ลั�เมูนต์�ที#+มู#อย(&ในข้ณะน�นให�กบโมูด(ลัที#+เร#ยก
![Page 51: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/51.jpg)
อ�ลกอร!ท-มจำ)านวันสมาชื่!กในล!สต�Algorithm listCount (list)Returns integer representing number of nodes in list.
Pre list is metadata structure to a valid list
Return count for number of nodes in list1 return (list count)end listCount
![Page 52: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/52.jpg)
การท องเข้�าไปในล!สต� (Traverse List)
• เร�+มูต์�นที#+โหนดแรก แลัะสแกนไปที#ลัะโหนดจนกระที+งส��นส,ดที#+โหนดส,ดที�าย
• ต์รรกะข้องการที&องเข้�าไปในลั�สต์� สามูารถใชิ�อลักอ ร�ที)มูเพื้�+อใชิ�งานได�อย&างหลัากหลัาย เชิ&น
– การเปลั#+ยนแปลังคิ&าในแต์&ลัะโหนด– การพื้�มูพื้�ข้�อมู(ลัภายในลั�สต์�– การคิ�านวณหาผลัรวมูข้องฟั:ลัด�ภายในลั�สต์�– การคิ�านวณหาคิ&าเฉลั#+ย
![Page 53: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/53.jpg)
การท องเข้�าไปในล!สต� (Traverse List)
• มู#การก�าหนดต์ว Walking Pointer เพื้�+อให�พื้อยน�เต์อร�น#� เคิลั�+อนที#+จากโหนดไปยงโหนดในแต์&ลัะอ�ลั�เมูนต์�ที#+ได�โปรเซส
• โดยการมู#การก�าหนดลั(ปให�กบ Walking Pointer
set pWalk to list headloop (more nodes)
process (pWalker data)set pWalker to next link
end loop
![Page 54: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/54.jpg)
การท องเข้�าไปในล!สต� (Traverse List)
• เร�+มูต์�นการต์�ดต์�ง Walking Pointer ที#+โหนดแรก ภายในลั�สต์�
• ที�าการประมูวลัผลัที&องไปที#ลัะโหนดเป2นลั�าดบ เร�+อยๆ ไป จนส,ดที�าย
• สามูาระออกแบบว�ธิ#การที&องเข้�าไปในลั�สต์�ได� 2 ว�ธิ#– ผ(�ใชิ�ก�าหนดการคิวบคิ,มูลั(ปด�วยการเร#ยกใชิ�ฟั9งก�ชิ +นเพื้�+อที&องไปยงอ�ลั�เมูนต์�ถดไปภายในลั�สต์�
– ใชิ�โมูด(ลัการที&องเข้�าไปในลั�สต์�ด�วยการเร#ยกใชิ�อลักอร�ที)มูที#+ได�เต์ร#ยมูมูาให�อย(&แลั�วมูาที�าการประมูวลัผลัข้�อมู(ลั
![Page 55: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/55.jpg)
การท องเข้�าไปในล!สต� (Traverse List)
![Page 56: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/56.jpg)
ต�วัอย างการใชื่�งานการท องเข้�าไปในล!สต�
![Page 57: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/57.jpg)
อ�ลกอร!ท-มการท องไปในล!สต�Algorithm getNext (list, fromWhere, dataOut)Traverses a list. Each call returns the location of an element in the list.
Pre list is metadata structure to a valid list fromWhere is 0 to start at this first element
Post dataOut contains data and true returned -or- if end of list, returns false
Return true if next element located false if end of list
![Page 58: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/58.jpg)
อ�ลกอร!ท-มการท องไปในล!สต� (ต อ)1 if (empty list)
1 return false2 if (fromWhere is beginning)
Start from first1 set list pos to list head2 move current list data to dataOut3 return true
3 elsecontinue from pos1 if (end of list)
End of list1 return false
2 else1 set list pos to next node2 move current list data to dataOut3 return true
3 end if4 end ifend getNext
![Page 59: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/59.jpg)
การยกเล!กการใชื่�งานล!สต� (Destroy List)
• เมู�+อลั�สต์�ไมู&มู#คิวามูต์�องการที#+จะใชิ�งานต์&อไป จะถ(ก ยกเลั�กใชิ�งาน โดยใชิ�ฟั9งก�ชิ +น Destroy List
• ด�าเน�นการลับโหนดที,กโหนดที#+ยงคิงอย(&ภายในลั�สต์�ออกไปที�งหมูด
• ส&งคิ�นพื้��นที#+หน&วยคิวามูจ�าให�กบระบบ
![Page 60: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/60.jpg)
อ�ลกอร!ท-มการยกเล!กการใชื่�งานล!สต�
Algorithm destroyList (pList)Deletes all data in list.
Pre list is metadata structure to a valid listPost all data deleted
1 loop (not at end of list)1 set list head to successor node2 release memory to heap
2 end loopNo data left in list. Reset metadata.
3 set list pos to null4 set list count to 0end destroyList
![Page 61: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/61.jpg)
ล!งก�ล!สต�ชื่น!ดอ��นๆ• เซอร�คิ(ลัาร�ลั�งก�ลั�สต์� (Circular-Linked List)• ดบเบ�ลัลั�งก�ลั�สต์� (Double-Linked List)
![Page 62: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/62.jpg)
เซอร�ค์�ลาร�ล!งก�ล!สต� (Circular-Linked List)
• เป2นลั�งก�ลั�สต์�ที#+จะใชิ�ลั�งก�ข้องโหนดส,ดที�ายเชิ�+อมูโยงไปยงโหนดแรกข้องลั�สต์�
![Page 63: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/63.jpg)
ด�บเบ!ลล!งก�ล!สต� (Double-Linked List)
• เป2นลั�งก�ลั�สต์�ที#+มู#คิวามูสามูารถส(ง• แต์&ลัะโหนดจะประกอบไปด�วยพื้อยน�เต์อร� 2 ต์ว
โดยต์วแรกจะชิ#�ไปยงต์วถดไป (Successor) แลัะอ#ก ต์วหน)+งจะชิ#�ไปยงต์วก&อนหน�า (Predecessor)
![Page 64: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/64.jpg)
ด�บเบ!ลล!งก�ล!สต� (Double-Linked List)
• ภายในโคิรงสร�างโหนดส&วนหว มู#ข้�อมู(ลั 3 ฟั:ลัด� คิ�อ ต์วนบ ต์�าแหน&งเฮดพื้อยน�เต์อร� แลัะพื้อยน�เต์อร�
ฟั:ลัด� rear • แต์&ะโหนดข้องดลัเบ�ลัลั�งก�ลั�สต์�จะบรรจ,ต์วชิ#�หร�อ
พื้อยน�เต์อร�อย(& 2 ต์ว– Backward pointer ที#+ชิ#�ไปยงข้�างหลัง คิ�อ ต์วก&อนหน�า
(Predecessor)– Forward pointer จะชิ#�ไปยงข้�างหน�า คิ�อต์วถดไป
(Successor)
![Page 65: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/65.jpg)
ต�วัอย างการแทรกโหันดในด�บเบ!ลล!งก�ล!สต�
![Page 66: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/66.jpg)
ต�วัอย างการแทรกโหันดในด�บเบ!ลล!งก�ล!สต�
![Page 67: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/67.jpg)
ต�วัอย างการลบโหันดในด�บเบ!ลล!งก�ล!สต�
![Page 68: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/68.jpg)
ต�วัอย างการสร�างล!งก�ล!สต�• ต์วอย&างการสร�างคิลัาสที#+ใชิ�แทีนโหนดหน)+งๆ ในลั�งก�ลั�สต์�
(SimpleNode.java)• ต์วอย&างการสร�างลั�งก�ลั�สต์�แบบทีางเด#ยว (SimpleLinkedList.java)• ต์วอย&างการน�าลั�งก�ลั�สต์�ที#+สร�างข้)�นมูาใชิ�งาน
(TestSimpleLinkedList.java)• สร�างลั�งก�ลั�สต์�ข้)�นมูา แลั�วน�าข้�อมู(ลัมูาเก3บลังไป 5 ชิ,ด• เน�+องจากข้�อมู(ลัถ(กเพื้�+มูเข้�าไปทีางหวข้องลั�งก�ลั�สต์� ที�าให�ข้�อมู(ลัที#+เก3บ
อย(&ในลั�งก�ลั�สต์� เร#ยงลั�าดบที#+ต์รงกนข้�ามู กบการเพื้�+มูข้�อมู(ลัเข้�าไป• น�าข้�อมู(ลั 6 แทีรกลังในลั�งก�ลั�สต์�ต์�าแหน&งถดจากโหนดที#+ 3 • ลับข้�อมู(ลัออกที#ลัะชิ,ดจนกลัายเป2นลั�งก�ลั�สต์�ว&าง
![Page 69: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/69.jpg)
การน)าล!งก�ล!สต�ไปประย�กต�ใชื่�งาน• ลั�งก�ลั�สต์�ถ(กน�าไปใชิ�ในการเก3บข้�อมู(ลัที#+ไมู&ทีราบจ�านวนข้องข้�อมู(ลัที�งหมูด
• สามูารถเพื้�+มูข้�อมู(ลัเข้�าไปในโคิรงสร�างข้�อมู(ลัได�เร�+อยๆ• การเพื้�+มูหร�อลับข้�อมู(ลัสามูารถที�าได�ง&ายแลัะรวดเร3วโดยการก�าหนดคิ&าต์วชิ#�ใหมู&
• แต์&ลั�งก�ลั�สต์�มู#ข้�อเส#ยในเร�+องการเข้�าถ)งข้�อมู(ลั เน�+องจาก ต์�องอ&านข้�อมู(ลัไปต์ามูลั�าดบที#ลัะชิ,ดข้�อมู(ลั ที�าให�เมู�+อมู#ข้�อมู(ลั
จ�านวนมูาก จะต์�องใชิ�เวลัาพื้อสมูคิวร• ลั�งก�ลั�สต์�เหมูาะกบงานที#+มู#การเพื้�+มูแลัะลับข้�อมู(ลัอย(&ต์ลัอดแต์&มู#การเข้�ามูาอ&านข้�อมู(ลัที#+เก3บไว�น�อยคิร�ง
![Page 70: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/70.jpg)
สร�ปท�ายบทท�� 4• ลั�สต์�เชิ�งเส�น มู# 2 ประเภที คิ�อ แบบส,&มู แลัะแบบเร#ยงลั�าดบ
• การด�าเน�นงานพื้��นฐานข้องลั�สต์� ประกอบด�วย การ แทีรก การลับ การอ&าน การที&องเข้�าไปในลั�สต์� การ
คิ�นหาลั�สต์�• เซอร�คิ(ลัาร�ลั�งก�ลั�สต์� คิ�อ ลั�งก�ฟั:ลัด�ข้องโหนดส,ดที�ายจะเชิ�+อมูโยงไปยงโหนดแรกข้องลั�สต์�
• ดบเบ�ลัลั�งก�ลั�สต์� แต์&ลัะโหนดจะมู#ต์วชิ#�หร�อพื้อยน� เต์อร� 2 ต์ว
![Page 71: Linked Lists](https://reader031.fdocuments.us/reader031/viewer/2022020921/568134a8550346895d9bb346/html5/thumbnails/71.jpg)
Any Questions ?