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

40
โครงสร้างข้อมูลแบบลงค์ลสต์ (LINKED LIST) ICOM ICOM114 114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES : DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Upload: others

Post on 04-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

โครงสรางขอมลแบบลงคลสต (LINKED LIST)

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 2: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

เหตผลในการใชงานโครงสรางขอมลแบบลงคลสตโครงสรางขอมลแบบลงคลสต

เนองจากการจดเกบขอมลแบบ Array จะตองจองเนอททงหมดทจะใชไวกอน เชน ตองการจดเกบขอมลจานวน ทงหมดทจะใชไวกอน เชน ตองการจดเกบขอมลจานวน 1,000 คา แตละคาใชเนอท 2 byte เนอททงหมดจะเปน 2,000 byte

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 3: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

เหตผลในการใชงานโครงสรางขอมลแบบลงคลสตโครงสรางขอมลแบบลงคลสต

การใชงานตวแปรแบบ ARRAY จะตองหาเนอททอยตดกน 2 000 byte การใชงานตวแปรแบบ ARRAY จะตองหาเนอททอยตดกน 2,000 byte ถงแมวาจะไมไดใชทงหมด จะไมสามารถนาไปใชกบการจดเกบขอมล

อน ๆ ได อน ๆ ได ถาไมสามารถหาเนอทวางตดกน 2,000 byte ได กจะไมสามารถใชงาน

ได เชน ไมสามารถสงใหโปรแกรมทางาน (execute) ได ถงแมวาจะ ได เชน ไมสามารถสงใหโปรแกรมทางาน (execute) ได ถงแมวาจะ compile ผานแลวกตาม เพราะเมอมการสงใหโปรแกรมทางาน ตวแปรทกตวทใชจะตองมการจบจองเนอทใน หนวยความจา เมอไมสามารถ

จบจองเนอทได compiler ของภาษาทใชเขยนโปรแกรมอาจจะแจงขอผด พลาด (error) Out of memory Not enough memory Insufficiency memory

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 4: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ปญหาของตวแปร Array

ตองไดเนอทวางทอยตดกนตามจานวนเนอททงหมด ถามเนอทวางดงน ตองไดเนอทวางทอยตดกนตามจานวนเนอททงหมด ถามเนอทวางดงน จดท 1 วาง 1,900 byte

จดท 2 วาง 800 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

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 5: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ลกษณะ Linked lists

Linked lists จะไมมการจองเนอท หรอทอย (address)ใน memory ไวกอน Linked lists จะไมมการจองเนอท หรอทอย (address)ใน memory ไวกอน เมอตองการใชจงจะทาการขอ เนอท ซงกจะทาการขอเนอทสาหรบ 1 คา

ใ ไป เมอตองการใชสาหรบขอมลตอไป กจะทาการขอเนอทอก เนอทท ขอใหม ไมจาเปนตองเปนเนอททอยตดกน แตเปนเนอทบรเวณใดกได

ทหาและพบวาวาง เมอเนอทไมไดอย ตดกน จะตองมตวททาหนาทจาวาขอมลตวตอไปเกบอยท

ใ address ใด ซงตวททาหนาทจาจะหมายถงตวททาหนาท เชอมระหวางขอมลใด ๆ กบขอมลตวตอไป ซงการเชอมนเรยกวา link และเมอเชอมขอมลหลาย ๆ คาเขาดวยกน 1 ชด จะเรยกวา listๆ คาเขาดวยกน 1 ชด จะเรยกวา list

ขอมล 1 คา จะเรยกวา node ซงแตละ node จะประกอบดวย ขอมลทจดเกบ

address ของ node (ขอมล) ตอไป

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 6: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

COMPONENTS OF A LINKED LIST

DATA NEXT

POINTER

POINTERNODE

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

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 7: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ลกษณะของหนวยความจาหลก

DATA0xFF0000110xFF000011

0xFF000012

DATA0xFF000013

0xFF000014

0xFF000015

0 FF00000xFF000016

DATA0xFF000017

0xFF000018

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 8: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

LINKED LIST REPRESENTATION

IN MEMORYIN MEMORY

DATA

STARTDATA DATA

NODE A NODE B NODE C

0x80017DATA 0x800010

0x80017DATA 0x800031 DATA NULL

0x80017 0x80010 0x80031

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 9: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 10: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

Linked lists แกปญหา Array

แกปญหาท 1 แกปญหาท 1 เนองจาก linked list จะขอเนอทครงละ 1 คา และเนอททขอไมจาเปนตองตดกน ดงนน

สามารถใชเนอท วางตามจดตาง ๆ ได เชน ตองการเนอทสาหรบขอมล 1 000 คา แตล สามารถใชเนอท วางตามจดตาง ๆ ได เชน ตองการเนอทสาหรบขอมล 1,000 คา แตละ คาใช 2 byte กจะทาการขอเนอททละ 1 คา คอ 2 byte จานวน 1,000 ครง ซงสามารถใชเนอตามจดท 1-4 ดงแสดงจดทวางในปญหาของ array ขอท 1ได ใชเนอตามจดท 1 4 ดงแสดงจดทวางในปญหาของ array ขอท 1ได

แกปญหาท 2 li k d li t 1 ใช ไ เนองจาก linked list จะขอเนอทครงละ 1 คา และขอเมอตองการใช ดงนนจะไมมการ

สญเสยเนอทใน memory ไปฟร ๆ นนคอ ใชเนอทตามจรง ตองการแคไหนใชเนอทไปแคนน แคนน

แกปญหาขอท 3 li k d li t ไปไ ส เนองจาก linked list จะขอเนอทไปไดเรอย ๆ ดงนนเมอมขอมลเพมกสามารถขอเนอท

ไดอกนนคอ ขอไดไปเรอยๆ ไมมขอจากด จนกวา เนอทใน memory จะเตม (ไมวาง )

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 11: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ประเภทของ linked lists

ป ป linked lists แบงเปน 2 ประเภท

Singly linked lists ( list ทม linked เดยว ) Singly linked lists ( list ทม linked เดยว )

Doubly linked list ( list ทม 2 linked ) Doubly linked list ( list ทม 2 linked )

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 12: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

TYPES OF LINKED LIST

Singly linked list

DATA

STARTDATA

Doubly linked list NODE A NODE B

DATA

STARTDATADATA DATA

NODE A NODE B

Circular linked list

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 13: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

OPERATION ON LINKED LIST

1. Creation

2. Insertion

3. Deletion

4. Traversing

5. Searching

6. Concatenation

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 14: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

INSERTION OPERATION

INSERTION OPERATION ของ LINKED LISTS คอ

การเพมโหนดทตนลงคลสต (AT THE BEGINNING OF THE LINKED LIST)การเพมโหนดทตนลงคลสต (AT THE BEGINNING OF THE LINKED LIST)

การเพมโหนดตอทายลงคลสต (AT THE END OF THE LINKED LIST)

การเพมโดยการแทรกระหวางโหนด (AT ANY SPECIFIED POSITION IN

BETWEEN IN A LINKED LIST)BETWEEN IN A LINKED LIST)

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 15: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

DELETION OPERATION

DELETION OPERATION ของ LINKED LISTS คอ

การลบโหนดทตนลงคลสต (AT THE BEGINNING OF THE LINKED LIST)การลบโหนดทตนลงคลสต (AT THE BEGINNING OF THE LINKED LIST)

การลบโหนดททายลงคลสต (AT THE END OF THE LINKED LIST)

การลบใดๆระหวางโหนด (AT ANY SPECIFIED POSITION IN BETWEEN IN A

LINKED LIST)LINKED LIST)

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 16: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

Singly linked lists

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

node ของ singly linked lists ประกอบดวย

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 17: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

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

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 18: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ALGORITHM INSERT A NODE AT THE BEGINNINGINSERT A NODE AT THE BEGINNING

1. Input DATA to be inserted2. Create a NewNode

3. NewNode → DATA = DATA4 If (START equal to NULL)4. If (START equal to NULL)

(a) NewNode → Next = NULL5. Else

(a) NewNode → Next = START6. START = NewNode7 Exit7. Exit

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 19: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ALGORITHM INSERT A NODE AT THE END INSERT A NODE AT THE END

1. Input DATA to be inserted2. Create a NewNode

3. NewNode → DATA = DATA4. NewNode → Next = NULL5. If (START equal to NULL)

(a) START = NewNode6. Else

(a) TEMP = START

(b) While (TEMP → Next not equal to NULL)(i) TEMP = TEMP → Next

7. TEMP → Next = NewNode8. Exit

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 20: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ALGORITHM INSERT A NODE AT ANY SPECIFIED POSITIONINSERT A NODE AT ANY SPECIFIED POSITION

1 I t DATA d POS t b i rt d1. Input DATA and POS to be inserted2. initialize TEMP = START; and j = 03. Repeat the step 3 while( k is less than POS)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 + 14. Create a New Node

5 NewNode → DATA DATA5. NewNode → DATA = DATA6. NewNode → Next = TEMP → Next7. TEMP → Next = NewNodeM xt w d8. Exit

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 21: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

การเพมขอมลใน Single Link List

ใ ป Insert ของ Singly linked lists กาหนดใหตวแปร

F เกบ address ของ node แรกของ listF เกบ address ของ node แรกของ list

NP เกบ address ของ node ทตองการเพม

การอางถงรายการใน node เชน

o อางถงขอมล ของ node F จะระบเปน F data

t ข d F ป F to อางถง next ของ node F จะระบเปน F next

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 22: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

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

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 23: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

คาถาม ?

ไ ไ ไ ใ ถาม ทราบไดอยางไรวา list วาง ( ยงไมมขอมลใน list )

ตอบ เมอ F = null โดยการตรวจสอบวา F มคาเปน null หรอไมตอบ เมอ F = null โดยการตรวจสอบวา F มคาเปน null หรอไม

ถาม ทราบไดอยางไร วา node ใดเปน node สดทายของ list

ตอบ node ท next เปน null โดยการตรวจสอบทละ node วา ไ next เปน null หรอไม เรมจาก node แรก คอ node ท F (เพราะ

F เปนตวแปรทจา address ของ node แรกของ list) ไปเรอย ๆF เปนตวแปรทจา address ของ node แรกของ list) ไปเรอย ๆ

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 24: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ใ แสดงในลกษณะ Link List

แสดงในลกษณะการเกบขอมลจรง

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 25: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ถาม ถา next ของ node F ไมใช null แลวจะเลอนไป node ตอไปไดอยางไร ถาม ถา next ของ node F ไมใช null แลวจะเลอนไป node ตอไปไดอยางไร F เปนตวแปรทจา address ของ node แรก ดงนนจะได นนคอ ตวแปร F อย

ท address 100 และมคาเปน 100 ซงเปน address ของ node แรกท address 100 และมคาเปน 100 ซงเปน address ของ node แรกการทจะเลอน F ไป node ตอไป คอ ให F มคาเปน address ของ node ท 2 คอ address 200address 200F --> data จะได 5 F --> next จะได 200ดงนน ถาตองการให F มคาเปน node ตอไป คอ มคาเปน 200 จะไดF = F --> next เพราะ F --> next มคาเปน 200แตถาเลอนไป node ตอไป โดยใชตวแปร F จดเรมตนของ list กจะหายไป ดงนน ตวแปรทเปนตวจา node แรก ของ list จะตองอยท node แรกตลอด

ดงนน กรณทตองการเลอนไปยง node ถดไป จะตองใชตวแปรเพมอก เพอ ทาหนาทในการเลอน ( ซงไมทาใหคาของ F เปลยนไป ) ในทนจะใชตวแปร P ในหนาทในการเลอน ( ซงไมทาใหคาของ F เปลยนไป ) ในทนจะใชตวแปร P ในการเลอน nod

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 26: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ใ ไ ไ ไป ถาให P = F จะได ภาพเสมอนจะไดดงตอไปน

ถาให P = PNext จะไดภาพเสมอนจะไดดงตอไปน

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 27: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ตวอยางคาถาม

ไ ไ คาถาม จะเชอมระหวาง node ไดอยางไร (link)

คาตอบ คาตอบ

กาหนดให P และ NP เปนดงน

ตองการเชอมระหวาง node P กบ node NP นนคอ ให next ของ node P มคาเปน 400 ซง 400 จะเปนคาของ NP ดงนนจะระบเปน

P next = NPP next NPจะได หรอ

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 28: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ตวอยางโจทยการใชลงคลสต

จงเขยนขนตอนการทางาน (Algorithm) ของการสรางโครงสราง

ขอมลแบบลงคลสตและแสดงขนตอนการทางานของแตละ

ขนตอนในการเพมขอมลแตละตว เพอใสขอมลและเรยงขอมล

โ จากนอยไปมาก โดยมขอมลสมมตดงน ตามลาดบ

8 , 5 , 9 , 3 , 6 , 4

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 29: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

Delete Node From Linked List

Pointer

START Pointer เพอใชในการระบถงตนของ Linked List

ใ ใ TEMP Pointer เพอใชในการระบถง Node ทตองการลบ

HOLD Pointer เพอใชในการระบถง Node ทกอนหนา Temp

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 30: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ALGORITHM FOR DELETING A NODE (#1)ALGORITHM FOR DELETING A NODE (#1)

1. Input the DATA to be deleted

2. if ((START → DATA) is equal to DATA)

( ) TEMP START (a) TEMP = START

(b) START = START → Next

(c) Set free the node TEMP, which is deleted

(d) Exit

3. HOLD = START

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 31: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ALGORITHM FOR DELETING A NODE (#2)ALGORITHM FOR DELETING A NODE (#2)

4. while ((HOLD → Next → Next) not equal to NULL))

(a) if ((HOLD → NEXT → DATA) equal to DATA)

o (i) TEMP = HOLD → Next

o (ii) HOLD → Next = TEMP → Next

o (iii) Set free the node TEMP, which is deleted

o (iv) Exit

(b) HOLD = HOLD → Next

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 32: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ALGORITHM FOR DELETING A NODE (#3)ALGORITHM FOR DELETING A NODE (#3)

5. if ((HOLD → next → DATA) == DATA)

(a) TEMP = HOLD → Next

(b) S f h d TEMP hi h i d l d (b) Set free the node TEMP, which is deleted

(c) HOLD → Next = NULL

(d) Exit

6. Display “DATA not found”

7 Exit 7. Exit

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 33: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

20 30 33 34 NULL

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 34: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

Idea

Hold Pointer ในการทองเขาไปใน Linked List เพอหา Node เปาหมายทจะเพมหรอลบ

T P i ใ N d ป Temp Pointer ในการระบถง Node เปาหมายทจะเพมหรอลบ

Hold อยหนา Temp เพอใหสามารถเพมหรอลบ Node ได Hold อยหนา Temp เพอใหสามารถเพมหรอลบ Node ได

*** ไมวาจะเปนการเพมหรอลบ ควรจะม Function ในการคนหาเปาหมายใหไดกอน

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 35: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ปรบปรง Algorithm ในการคนหา

จาก Algorithm ทใหจะได Temp Pointer ชอยทเปาหมาย เพยงอยางเดยว

*** ป ป Al i h ใ ไ T P i H ld *** ปรบปรง Algorithm ใหได Temp Pointer และ Hold Pointer หลงจากคนหาเปาหมายเจอ

Temp Pointer อยทเปาหมาย

Hold Pointer อยทหนาเปาหมาย

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 36: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ALGORITHM FOR SEARCHING A NODE

1 I t th DATA t b h d 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

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 37: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

DOUBLY LINKED LIST

All nodes are linked together by multiple links

Every nodes can reference to Every nodes can reference to

next node

previous node

E d h th fi ld

L Pointer DATA R Pointer

DOUBLY LINKED LIST NODE Every nodes has three fields

Left Pointer will hold the address of previous node

DOUBLY LINKED LIST NODE

p

DATA will store the information of the node

Right Pointer will hold the address of next node

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 38: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

REPRESENTATION OF DOUBLY LINKED LIST

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 39: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ALGORITHM FOR INSERTING A NODEOF DOUBLY LINKED LISTOF DOUBLY LINKED LIST

1 I t th DATA d POS 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) 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 ( ) N N d RP i t TEMP RP i t (c) NewNode → RPoint = TEMP → RPoint (d) NewNode → LPoint = TEMP (e) (TEMP → RPoint) → LPoint = NewNode (f ) TEMP → RPoint = New Node

6. Else l “ ” (a) Display “Position NOT found”

7. Exit

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES

Page 40: โครงสร้างข้อมูลแบบลิงค ์ลิสต์(LINKED LIST)elearning.psru.ac.th › courses › 229 › CHAP4_LINKLIST.pdf · doubly linked

ตวอยาง Linked List

จาก Linked List ทกาหนดให 3 , 5 , 7 , 8 1) ใหเขยนขนตอนและหรอรปภาพเพออธบายขนตอนการลบ Node 7 1) ใหเขยนขนตอนและหรอรปภาพเพออธบายขนตอนการลบ Node 7

ออกจาก Linked List ทง 2 แบบ

o Singly linked list

o Doubly linked list

2) ใหเขยนขนตอนและหรอรปภาพเพออธบายขนตอนการเพม Node 11 หลง Node 5 เขาไปท Linked List ทง 2 แบบ

o Singly linked list

D bl li k d li t o Doubly linked list

ICOMICOM114114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES