4 โครงสร้างข้อมูลแบบลิงค์ลิสต์ (LINKED LIST).

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Linked List (ลิงค์ลิสต์)
Advertisements

บทที่ 5 Link List Link List.
Linked List List is group of nodes that consists of data and link.
จัดทำโดย น. ส. ดวงกมล งามอยู่เจริญ เลขที่ 8 น. ส. ณัชชา เชื้อตา เลขที่ 6 เตรียมบริหารธุรกิจปี 1.
การใช้งานโปรแกรม SPSS
LAB ตัวแปร : Variables ในการเขียนโปรแกรมเราต้องการให้โปรแกรม จดจำค่าต่างๆ ไว้ เช่นเมื่อรับค่าข้อมูลจาก ผู้ใช้ หรือค่าที่ได้จากการคำนวณใดๆ ค่า.
หน่วยการเรียนรู้ที่ 2 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
รูปร่างของเครือข่ายคอมพิวเตอร์
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
หน่วยที่ 5 การเวียนเกิด
DATA STRUCTURE AND ALGORITHM Linked List.
Linked List (2) Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
Queue Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
ครั้งที่ 7 รีจิสเตอร์ (REGISTER). รีจิสเตอร์ (Register) รีจิสเตอร์เป็นวงจรความจำที่ใช้ในการเก็บค่า ทางไบนารี่ ใช้ในการเก็บค่าในระหว่างการ ประมวลผลโดยใช้ฟลิป.
โปรแกรมคำนวณคะแนน สหกรณ์ ตามเกณฑ์ดีเด่นแห่งชาติ กรมส่งเสริม สหกรณ์ กองพัฒนาสหกรณ์ด้านการเงิน และร้านค้า วิธีการใ ช้
การเลือกข้อมูลจาก List การกำหนดเงื่อนไขการป้อนข้อมูลด้วย Data Validation การใส่ Comment / แสดง / แก้ไข / ลบ.
1. รู้ถึงความต้องการของตัวเอง ก่อนก่อนเริ่มต้นออกแบบ เมื่อคุณเริ่มคิดจะออกแบบโบรชัวร์ออกมาอย่างไร ให้เริ่มต้น สอบถามลูกค้าของคุณก่อนว่าทำไม เค้าต้องการโบร์ชัวร์
MTH 261 File Management. File Management File Management จะอธิบายเกี่ยวกับการเขียน ส่วนจัดการแฟ้มข้อมูล เราสามารถที่จะเขียน โปรแกรมเพื่อเรียกใช้แฟ้มข้อมูลที่เรามี
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
ซอร์ฟแวร์ ( Software ). Microsoft excel Microsoft excel Microsoft power point.. Link Link.
คำสั่งควบคุมการทำงาน
Project Management by Gantt Chart & PERT Diagram
ง21101 การงานอาชีพและเทคโนโลยี ม. 1 เจตคติต่อการประกอบอาชีพ
เกม คณิตคิดเร็ว.
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [2] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
หน่วยการเรียนที่ 6 เรื่อง การจัดการฐานข้อมูลด้วย PHP Function
การประยุกต์ Logic Gates ภาค 2
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
int isEmpty ( node **ptr_head) ;
Trees (2) University of Phayao Sanchai Yeewiyom
แล้วทำการเรียงลำดับข้อมูลใหม่โดยเรียงจากน้อยไปหามาก
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
BC320 Introduction to Computer Programming
DC Voltmeter.
โครงสร้างภาษา C Arduino
หน่วยการเรียนที่ 4 เรื่อง การควบคุมทิศทางการทำงาน
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop)
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 8 เงื่อนไขตัดสินใจ
บทที่ 8 การควบคุมโครงการ
คำสั่ง Create , Insert, Delete, Update
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
กำหนดกรอบระยะเวลาการขึ้นทะเบียนปี2556/57 1. ข้าว
วิธีการกำหนดค่า Microsoft SharePoint ของคุณ เว็บไซต์ออนไลน์
Data storage II Introduction to Computer Science ( )
บริษัท พัฒนาวิชาการ (2535) จำกัด
Week 5 C Programming.
บทที่7 ทฤษฎีกราฟเบื้องต้น
วัฏจักรหิน วัฏจักรหิน : วัดวาอาราม หินงามบ้านเรา
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
Data storage II Introduction to Computer Science ( )
หน่วยที่ 6 อะเรย์ของอักขระ
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
บทที่ 7 การประมวลผลอาร์เรย์
บทที่ 8 การแก้ไขข้อผิดพลาดโปรแกรม(Debugging)
การเปลี่ยนแปลงประมาณการทางบัญชี และข้อผิดพลาด
2 โครงสร้างข้อมูลแบบสแตก (STACK).
3 โครงสร้างข้อมูลแบบคิว (QUEUE).
บทที่ 2 โครงสร้างข้อมูลแบบแถวลำดับหรืออาร์เรย์ (Array)
ชัยพฤกษ์รัตนาธิเบศร์ - วงแหวน
Chapter 3 : Array.
Array: One Dimension Programming I 9.
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
Decision: Single and Double Selection (if and if-else statement)
กระดาษทำการ (หลักการและภาคปฏิบัติ)
ใบสำเนางานนำเสนอ:

4 โครงสร้างข้อมูลแบบลิงค์ลิสต์ (LINKED LIST)

เหตุผลในการใช้งาน โครงสร้างข้อมูลแบบลิงค์ลิสต์ เนื่องจากการจัดเก็บข้อมูลแบบ Array จะต้องจองเนื้อที่ทั้งหมดที่จะใช้ไว้ก่อน เช่น ต้องการจัดเก็บข้อมูลจำนวน 1,000 ค่า แต่ละค่าใช้เนื้อที่ 2 byte เนื้อที่ทั้งหมดจะเป็น 2,000 byte ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

เหตุผลในการใช้งาน โครงสร้างข้อมูลแบบลิงค์ลิสต์ การใช้งานตัวแปรแบบ ARRAY จะต้องหาเนื้อที่ที่อยู่ติดกัน 2,000 byte ถึงแม้ว่าจะไม่ได้ใช้ทั้งหมด จะไม่สามารถนำไปใช้กับการจัดเก็บข้อมูลอื่น ๆ ได้ ถ้าไม่สามารถหาเนื้อที่ว่างติดกัน 2,000 byte ได้ ก็จะไม่สามารถใช้งานได้ เช่น ไม่สามารถสั่งให้โปรแกรมทำงาน (execute) ได้ ถึงแม้ว่าจะ compile ผ่านแล้วก็ตาม เพราะเมื่อมีการสั่งให้โปรแกรมทำงาน ตัวแปรทุกตัวที่ใช้จะต้องมีการจับจองเนื้อที่ใน หน่วยความจำ เมื่อไม่สามารถจับจองเนื้อที่ได้ compiler ของภาษาที่ใช้เขียนโปรแกรมอาจจะแจ้งข้อผิด พลาด (error) Out of memory Not enough memory Insufficiency memory

ปัญหาของตัวแปร Array ต้องได้เนื้อที่ว่างที่อยู่ติดกันตามจำนวนเนื้อที่ทั้งหมด ถ้ามีเนื้อที่ว่างดังนี้ จุดที่ 1 ว่าง 1,900 byte จุดที่ 2 ว่าง 800 byte จุดที่ 3 ว่าง 1,990 byte จุดที่ 4 ว่าง 10 byte จะเห็นว่าไม่มีจุดใดเลยที่มีเนื้อที่ว่างติดกัน 2,000 byte ดังนั้นโปรแกรมนี้ไม่สามารถทำงานได้ กรณีที่จองเนื้อที่ไว้ 2,000 byte เก็บข้อมูล 1,000 ค่า แต่การใช้งานจริง ๆ เก็บข้อมูลเพียง 100 ค่า ใช้เนื้อที่ไปเพียง 200 byte ทำให้เหลือเนื้อที่ที่ไม่ได้ใช้ 1,800 byte ซึ่งเนื้อที่ 1,800 byte จะถูกกันไว้ สำหรับตัวแปรนั้น ๆ ดังนั้นเนื้อที่ที่เหลือจะไม่สามารถนำไปใช้งานอื่นได้ กรณีที่จองเนื้อที่ไว้เก็บข้อมูล 1,000 ค่า แต่การใช้งานจริง ๆ ต้องการมากกว่า 1,000 ค่า เช่น ต้องการเพิ่ม อีก 2 ค่า ก็ไม่สามารถที่จะเพิ่มเติมข้อมูลได้ (จองไว้แค่ไหน ใช้แค่นั้น) จากปัญหาของ array ทั้ง 3 ข้อ สามารถแก้ปัญหาได้โดยใช้ linked lists

ลักษณะ Linked lists Linked lists จะไม่มีการจองเนื้อที่ หรือที่อยู่ (address)ใน memory ไว้ก่อน เมื่อต้องการใช้จึงจะทำการขอ เนื้อที่ ซึ่งก็จะทำการขอเนื้อที่สำหรับ 1 ค่า เมื่อต้องการใช้สำหรับข้อมูลต่อไป ก็จะทำการขอเนื้อที่อีก เนื้อที่ที่ ขอใหม่ ไม่จำเป็นต้องเป็นเนื้อที่ที่อยู่ติดกัน แต่เป็นเนื้อที่บริเวณใดก็ได้ ที่หาและพบว่าว่าง เมื่อเนื้อที่ไม่ได้อยู่ ติดกัน จะต้องมีตัวที่ทำหน้าที่จำว่าข้อมูลตัวต่อไปเก็บอยู่ที่ address ใด ซึ่งตัวที่ทำหน้าที่จำจะหมายถึงตัวที่ทำหน้าที่ เชื่อมระหว่างข้อมูลใด ๆ กับข้อมูลตัวต่อไป ซึ่งการเชื่อมนี้เรียกว่า link และเมื่อเชื่อมข้อมูลหลาย ๆ ค่าเข้าด้วยกัน 1 ชุด จะเรียกว่า list ข้อมูล 1 ค่า จะเรียกว่า node ซึ่งแต่ละ node จะประกอบด้วย ข้อมูลที่จัดเก็บ address ของ node (ข้อมูล) ต่อไป

COMPONENTS OF A LINKED LIST DATA NEXT POINTER NODE POINTER is similar variable for contain the address of node if not point to any address of node called “NULL” pointer will hold the address of first node call “START” NODE DATA : contain the information NEXT : contain the address of next node in link list

ลักษณะของหน่วยความจำหลัก DATA 0xFF000011 0xFF000012 0xFF000013 0xFF000014 0xFF000015 0xFF000016 0xFF000017 0xFF000018

LINKED LIST REPRESENTATION IN MEMORY DATA START NODE A DATA DATA NODE B NODE C DATA 0x800010 0x80017 DATA 0x800031 DATA NULL 0x80010 0x80031

Linked lists แก้ปัญหา Array แก้ปัญหาที่ 1 เนื่องจาก linked list จะขอเนื้อที่ครั้งละ 1 ค่า และเนื้อที่ที่ขอไม่จำเป็นต้องติดกัน ดังนั้น สามารถใช้เนื้อที่ ว่างตามจุดต่าง ๆ ได้ เช่น ต้องการเนื้อที่สำหรับข้อมูล 1,000 ค่า แต่ละ ค่าใช้ 2 byte ก็จะทำการขอเนื้อที่ทีละ 1 ค่า คือ 2 byte จำนวน 1,000 ครั้ง ซึ่งสามารถใช้เนื้อตามจุดที่ 1-4 ดังแสดงจุดที่ว่างในปัญหาของ array ข้อที่ 1ได้ แก้ปัญหาที่ 2 เนื่องจาก linked list จะขอเนื้อที่ครั้งละ 1 ค่า และขอเมื่อต้องการใช้ ดังนั้นจะไม่มีการสูญเสียเนื้อที่ใน memory ไปฟรี ๆ นั่นคือ ใช้เนื้อที่ตามจริง ต้องการแค่ไหนใช้เนื้อที่ไปแค่นั้น แก้ปัญหาข้อที่ 3 เนื่องจาก linked list จะขอเนื้อที่ไปได้เรื่อย ๆ ดังนั้นเมื่อมีข้อมูลเพิ่มก็สามารถขอเนื้อที่ได้อีกนั่นคือ ขอได้ไปเรื่อยๆ ไม่มีข้อจำกัด จนกว่า เนื้อที่ใน memory จะเต็ม (ไม่ว่าง )

ประเภทของ linked lists Singly linked lists ( list ที่มี linked เดียว ) Doubly linked list ( list ที่มี 2 linked )

TYPES OF LINKED LIST Singly linked list Doubly linked list Circular linked list DATA START NODE A NODE B START DATA DATA NODE A NODE B

OPERATION ON LINKED LIST 1. Creation 2. Insertion 3. Deletion 4. Traversing 5. Searching 6. Concatenation

INSERTION OPERATION INSERTION OPERATION ของ LINKED LISTS คือ การเพิ่มโหนดที่ต้นลิงค์ลิสต์ (AT THE BEGINNING OF THE LINKED LIST) การเพิ่มโหนดต่อท้ายลิงค์ลิสต์ (AT THE END OF THE LINKED LIST) การเพิ่มโดยการแทรกระหว่างโหนด (AT ANY SPECIFIED POSITION IN BETWEEN IN A LINKED LIST)

DELETION OPERATION DELETION OPERATION ของ LINKED LISTS คือ การลบโหนดที่ต้นลิงค์ลิสต์ (AT THE BEGINNING OF THE LINKED LIST) การลบโหนดที่ท้ายลิงค์ลิสต์ (AT THE END OF THE LINKED LIST) การลบใดๆระหว่างโหนด (AT ANY SPECIFIED POSITION IN BETWEEN IN A LINKED LIST)

Singly linked lists เป็น linked lists ที่มีการเก็บ link เดียว คือเก็บเฉพาะ link ของ node ต่อไป (next node) node ของ singly linked lists ประกอบด้วย

ตัวอย่าง Node แบบ Single Link List

ALGORITHM INSERT A NODE AT THE BEGINNING 1. Input DATA to be inserted 2. Create a NewNode 3. NewNode → DATA = DATA 4. If (START equal to NULL) (a) NewNode → Next = NULL 5. Else (a) NewNode → Next = START 6. START = NewNode 7. Exit

ALGORITHM INSERT A NODE AT THE END 1. Input DATA to be inserted 2. Create a NewNode 3. NewNode → DATA = DATA 4. NewNode → Next = NULL 5. If (START equal to NULL) (a) START = NewNode 6. Else (a) TEMP = START (b) While (TEMP → Next not equal to NULL) (i) TEMP = TEMP → Next 7. TEMP → Next = NewNode 8. Exit

ALGORITHM INSERT A NODE AT ANY SPECIFIED POSITION 1. Input DATA and POS to be inserted 2. initialize TEMP = START; and j = 0 3. Repeat the step 3 while( k is less than POS) (a) TEMP = TEMP è Next (b) If (TEMP is equal to NULL) (i) Display “Node in the list less than the position” (ii) Exit (c) k = k + 1 4. Create a New Node 5. NewNode → DATA = DATA 6. NewNode → Next = TEMP → Next 7. TEMP → Next = NewNode 8. Exit

การเพิ่มข้อมูลใน Single Link List Insert ของ Singly linked lists กำหนดให้ตัวแปร F เก็บ address ของ node แรกของ list NP เก็บ address ของ node ที่ต้องการเพิ่ม การอ้างถึงรายการใน node เช่น อ้างถึงข้อมูล ของ node F จะระบุเป็น F  data อ้างถึง next ของ node F จะระบุเป็น F  next

การเพิ่มข้อมูลต่อท้าย list (Append Singly linked list)

คำถาม ? ถาม ทราบได้อย่างไรว่า list ว่าง ( ยังไม่มีข้อมูลใน list ) ตอบ เมื่อ F = null โดยการตรวจสอบว่า F มีค่าเป็น null หรือไม่ ถาม ทราบได้อย่างไร ว่า node ใดเป็น node สุดท้ายของ list ตอบ node ที่ next เป็น null โดยการตรวจสอบทีละ node ว่า next เป็น null หรือไม่ เริ่มจาก node แรก คือ node ที่ F (เพราะ F เป็นตัวแปรที่จำ address ของ node แรกของ list) ไปเรื่อย ๆ

แสดงในลักษณะ Link List แสดงในลักษณะการเก็บข้อมูลจริง

ถาม ถ้า next ของ node F ไม่ใช่ null แล้วจะเลื่อนไป node ต่อไปได้อย่างไร F เป็นตัวแปรที่จำ address ของ node แรก ดังนั้นจะได้ นั่นคือ ตัวแปร F อยู่ที่ address 100 และมีค่าเป็น 100 ซึ่งเป็น address ของ node แรก การที่จะเลื่อน F ไป node ต่อไป คือ ให้ F มีค่าเป็น address ของ node ที่ 2 คือ address 200 F --> data จะได้ 5 F --> next จะได้ 200 ดังนั้น ถ้าต้องการให้ F มีค่าเป็น node ต่อไป คือ มีค่าเป็น 200 จะได้ F = F --> next เพราะ F --> next มีค่าเป็น 200 แต่ถ้าเลื่อนไป node ต่อไป โดยใช้ตัวแปร F จุดเริ่มต้นของ list ก็จะหายไป ดังนั้น ตัวแปรที่เป็นตัวจำ node แรก ของ list จะต้องอยู่ที่ node แรกตลอด ดังนั้น กรณีที่ต้องการเลื่อนไปยัง node ถัดไป จะต้องใช้ตัวแปรเพิ่มอีก เพื่อ ทำหน้าที่ในการเลื่อน ( ซึ่งไม่ทำให้ค่าของ F เปลี่ยนไป ) ในที่นี้จะใช้ตัวแปร P ในการเลื่อน nod

ถ้าให้ P = F จะได้ ภาพเสมือนจะได้ดังต่อไปนี้ ถ้าให้ P = PNext จะได้ภาพเสมือนจะได้ดังต่อไปนี้                                                                

ตัวอย่างคำถาม คำถาม จะเชื่อมระหว่าง node ได้อย่างไร (link) คำตอบ กำหนดให้ P และ NP เป็นดังนี้ ต้องการเชื่อมระหว่าง node P กับ node NP นั่นคือ ให้ next ของ node P มีค่าเป็น 400 ซึ่ง 400 จะเป็นค่าของ NP ดังนั้นจะระบุเป็น P next = NP จะได้ หรือ

ตัวอย่างโจทย์การใช้ลิงค์ลิสต์ จงเขียนขั้นตอนการทำงาน (Algorithm) ของการสร้างโครงสร้าง ข้อมูลแบบลิงค์ลิสต์และแสดงขั้นตอนการทำงานของแต่ละ ขั้นตอนในการเพิ่มข้อมูลแต่ละตัว เพื่อใส่ข้อมูลและเรียงข้อมูล จากน้อยไปมาก โดยมีข้อมูลสมมุติดังนี้ ตามลำดับ 8 , 5 , 9 , 3 , 6 , 4

Delete Node From Linked List Pointer START Pointer  เพื่อใช้ในการระบุถึงต้นของ Linked List TEMP Pointer  เพื่อใช้ในการระบุถึง Node ที่ต้องการลบ HOLD Pointer  เพื่อใช้ในการระบุถึง Node ที่ก่อนหน้า Temp

ALGORITHM FOR DELETING A NODE (#1) 1. Input the DATA to be deleted 2. if ((START → DATA) is equal to DATA) (a) TEMP = START (b) START = START → Next (c) Set free the node TEMP, which is deleted (d) Exit 3. HOLD = START

ALGORITHM FOR DELETING A NODE (#2) 4. while ((HOLD → Next → Next) not equal to NULL)) (a) if ((HOLD → NEXT → DATA) equal to DATA) (i) TEMP = HOLD → Next (ii) HOLD → Next = TEMP → Next (iii) Set free the node TEMP, which is deleted (iv) Exit (b) HOLD = HOLD → Next

ALGORITHM FOR DELETING A NODE (#3) 5. if ((HOLD → next → DATA) == DATA) (a) TEMP = HOLD → Next (b) Set free the node TEMP, which is deleted (c) HOLD → Next = NULL (d) Exit 6. Display “DATA not found” 7. Exit

20 30 33 34 NULL

Idea Hold Pointer ในการท่องเข้าไปใน Linked List เพื่อหา Node เป้าหมายที่จะเพิ่มหรือลบ Temp Pointer ในการระบุถึง Node เป้าหมายที่จะเพิ่มหรือลบ Hold อยู่หน้า Temp เพื่อให้สามารถเพิ่มหรือลบ Node ได้ *** ไม่ว่าจะเป็นการเพิ่มหรือลบ ควรจะมี Function ในการค้นหาเป้าหมายให้ได้ก่อน

ปรับปรุง Algorithm ในการค้นหา จาก Algorithm ที่ให้จะได้ Temp Pointer ชี้อยู่ที่เป้าหมาย เพียงอย่างเดียว *** ปรับปรุง Algorithm ให้ได้ Temp Pointer และ Hold Pointer หลังจากค้นหาเป้าหมายเจอ Temp Pointer อยู่ที่เป้าหมาย Hold Pointer อยู่ที่หน้าเป้าหมาย

ALGORITHM FOR SEARCHING A NODE 1. Input the DATA to be searched 2. Initialize TEMP = START; POS =1; 3. Repeat the step 4, 5 and 6 until (TEMP is equal to NULL) 4. If (TEMP → DATA is equal to DATA) (a) Display “The data is found at POS” (b) Exit 5. TEMP = TEMP → Next 6. POS = POS+1 7. If (TEMP is equal to NULL) (a) Display “The data is not found in the list” 8. Exit

DOUBLY LINKED LIST All nodes are linked together by multiple links Every nodes can reference to next node previous node Every nodes has three fields Left Pointer  will hold the address of previous node DATA  will store the information of the node Right Pointer  will hold the address of next node L Pointer DATA R Pointer DOUBLY LINKED LIST NODE

REPRESENTATION OF DOUBLY LINKED LIST

ALGORITHM FOR INSERTING A NODE OF DOUBLY LINKED LIST 1. Input the DATA and POS 2. Initialize TEMP = START; i = 0 3. Repeat the step 4 if (i less than POS) and (TEMP is not equal to NULL) 4. TEMP = TEMP → RPoint; i = i +1 5. If (TEMP not equal to NULL) and (i equal to POS) (a) Create a New Node (b) NewNode → DATA = DATA (c) NewNode → RPoint = TEMP → RPoint (d) NewNode → LPoint = TEMP (e) (TEMP → RPoint) → LPoint = NewNode (f ) TEMP → RPoint = New Node 6. Else (a) Display “Position NOT found” 7. Exit

ตัวอย่าง Linked List จาก Linked List ที่กำหนดให้ 3 , 5 , 7 , 8 1) ให้เขียนขั้นตอนและหรือรูปภาพเพื่ออธิบายขั้นตอนการลบ Node 7 ออกจาก Linked List ทั้ง 2 แบบ Singly linked list Doubly linked list 2) ให้เขียนขั้นตอนและหรือรูปภาพเพื่ออธิบายขั้นตอนการเพิ่ม Node 11 หลัง Node 5 เข้าไปที่ Linked List ทั้ง 2 แบบ