ݺߣ

ݺߣShare a Scribd company logo
 โครงสร้างข้อมูลแบบลิงค์ลิสต์
(Linked List)
โครงสร้างข้อมูล (Data Structure)
โครงสร้างข้อมูลแบบลิงค์ลิสต์
(Linked List)
 ลิงค์ลิสต์เป็นการจัดเก็บชุดข้อมูลเชื่อมโยงต่อเนื่องกัน
ไปตามลำาดับ ซึ่งอาจอยู่ในลักษณะแบบเชิงเส้นตรง
(linear) หรือ ไม่เป็นเส้นตรง (nonlinear) ก็ได้ ซึ่ง
ในลิสต์จะประกอบไปด้วยข้อมูลที่เรียกว่าโหนด
(node) ในหนึ่งโหนดจะประกอบด้วยส่วนของข้อมูลที่
ต้องการจัดเก็บ เรียกว่าส่วน Info และส่วนที่เป็น
พอยน์เตอร์ที่ชี้ไปยังโหนดถัดไป (Link) หรือชี้ไปยัง
โหนดอื่นๆที่อยู่ในลิสต์ หากไม่มีโหนดที่อยู่ถัดไป ส่วน
โครงสร้างข้อมูลแบบลิงค์ลิสต์
(Linked List)

Linke d list คล้ายๆ กับขบวนรถไฟ ตรงที่ว่าการที่จะเกิด
เป็นขบวนรถไฟได้จะต้องมีการนำาโบกี้รถไฟหลายๆ
โบกี้มาต่อกัน ขบวนจะสั้นหรือยาวก็ขึ้นอยู่กับโบกี้
เหล่านี้ หากผู้โดยสารโบกี้แรกๆ ต้องการที่จะไปยัง
โบกี้สุดท้ายก็ต้องเดินผ่านโบกี้อื่นๆ ระหว่างทางด้วย
โครงสร้างข้อมูลแบบลิงค์ลิสต์
(Linked List)
 โหนด (Node)
 โครงสร้างแบบ Linked list แบ่งได้หลายแบบตามวิธีการชี้
ไปยังโหนดต่างๆ เช่น Singly Linked list , Doubly
Linked list , Multi-Linked list
 Singly Linked list
Singly Linked list จะประกอบด้วยโหนดที่มีพอยน์เตอร์ชี้
ไปในทิศทางเดียว คือชี้ไปยังโหนดถัดไป
โครงสร้างข้อมูลแบบลิงค์ลิสต์
(Linked List)
 Doubly Linked list
Doubly linked list ประกอบด้วยส่วนของ Info
และ พอยน์เตอร์ที่ชี้ไป 2 ทิศทาง คือ ชี้ไปยังโหนด
ถัดไป และชี้ไปยังโหนดก่อนหน้า ดังนั้นเราจึง
สามารถทำาการอ่านข้อมูลได้ 2 วิธี คือ การอ่านไป
ข้างหน้า และอ่านไปทางข้างหลัง
การทำางานของลิสต์
 การสร้างลิสต์ว่าง
 การทดสอบว่าลิสต์ว่างหรือไม่
 การเพิ่มสมาชิกใหม่ลงในลิสต์
 การลบสมาชิกออกจากลิสต์
 การท่องไปในลิสต์หรือส่วนของลิสต์ โดยการเข้าถึง
สมาชิก และประมวลผลสมาชิกแบบลำาดับ
การสร้างรายการว่าง
typedef struct listnode{ // create list node type
int value;
struct listnode *next;
} LISTNODE;
LISTNODE *numlist=NULL;
numlist =(LISTNODE *)malloc(sizeof(LISTNODE));
numlist
ทดสอบว่ารายการว่างหรือไม่
// return 1 if list is empty, else return 0.
int islempty(LISTNODE *head)
{
return (head == NULL);
}
numlist
=
NULL
การเพิ่มสมาชิกใหม่ลงในรายการ
 Insert first element
 Insert element on head of list
 Insert element between list
 Insert element on end of list
Insert first element
numlist = getnode(); // head of list
numlist->value = 23;
numlist->next = NULL;
numlist 23 NULL
Insert element on head of list
NEW = getnode(); // head of list
NEW->value = 20;
NEW->next = numlist;
NEW
20
numlist 23 NULL
numlist = NEW;
Insert element between list
NEW = getnode();
NEW->value = 24;
NEW->next = numlist->next ;
numlist 23
numlist->next = NEW;
25
NULL
NEW 24
Insert element on end of list
NEW = getnode();
NEW->value = 25;
NEW->next = NULL;
NEW
25
numlist 23 NULL
numlist->next = NEW;
NULL
การลบสมาชิกออกจากรายการ
 delete element on head of list
 delete element between list
 delete element on end of list
delete element on head of list
if( numlist->value == 23 ){ // test value of head node
backup = numlist; // backup head node
numlist = numlist->next; // move head to next node
23
free(backup); // free backup node
}
25
NULL
24backup
delete element between list
ptr = ptr->next; // move ptr to next node
if( (ptr->next)->value == 24 ){ // test value of next node
backup = ptr->next; // backup next node
ptr->next = (ptr->next)->next; // point next node to skip 1 node
23
free(backup); // free backup node
}
25
NULL
24
backup
delete element on end of list
while(ptr->next!=NULL){
ptr = ptr->next; // move ptr to next node
if( (ptr->next)->value == 25 ){ // test value of next node
backup = ptr->next; // backup next node
ptr->next = (ptr->next)->next; // point next node to skip 1 node
23
free(backup); // free backup node
break;
}
} 25
NULL
24
ptr backup
การเข้าถึงสมาชิกของรายการ
void printlst(LISTNODE *numlist)
{
LISTNODE *ptr=numlist;
while(ptr!=NULL){
printf("%3d",ptr->value);
ptr = ptr->next; // next node
}
}
23 25
NULL
24
ptr
numlist
Ad

Recommended

ข้อสอบ O-net ภาษาอังกฤษ ม.6 ชุด 1
ข้อสอบ O-net ภาษาอังกฤษ ม.6 ชุด 1
ธัญชนก อธิจิต
การใช้อิȨทอร์๶Ȩตเบื้องต้น
การใช้อิȨทอร์๶Ȩตเบื้องต้น
Jaturapad Pratoom
ข้อสอบȨฏศิลป์ลีลาศ
ข้อสอบȨฏศิลป์ลีลาศ
peter dontoom
รวมข้อสอบ O-NETปี51-54 (คอมพิวเตอร์)
รวมข้อสอบ O-NETปี51-54 (คอมพิวเตอร์)
ภูเบศ เศรษฐบุตร
ใบความรู้ 2 สมบัติของสารประกอบไอออȨก
ใบความรู้ 2 สมบัติของสารประกอบไอออȨก
Pat Jitta
ระบบขับถ่าย (T) 1 2560
ระบบขับถ่าย (T) 1 2560
Thitaree Samphao
แบบฝึกหัด เรื่อง การเขียนผังงาน
แบบฝึกหัด เรื่อง การเขียนผังงาน
Saengpech Kumpo
แบบทดสอบ Xcel ปวส. 1-3 (ตอนที่ 2).doc
แบบทดสอบ Xcel ปวส. 1-3 (ตอนที่ 2).doc
AnuwatBhumthavorn
แผȨารจัึϸาร๶รียนรู้เพื่อพัոาทักษะการพูด
แผȨารจัึϸาร๶รียนรู้เพื่อพัոาทักษะการพูด
Wanida Keawprompakdee
แผนการจัดการเรียนรู้ ส่วนประกอบคอมพิวเตอร์ ม.2
แผนการจัดการเรียนรู้ ส่วนประกอบคอมพิวเตอร์ ม.2
พงศธร ภักดี
การดูแลอุปกรณ์คอมพิว๶ตอร์
การดูแลอุปกรณ์คอมพิว๶ตอร์
duanpen homkajuy
ข้อสอบปลายภาค50ข้อexcel 07 2558
ข้อสอบปลายภาค50ข้อexcel 07 2558
peter dontoom
What s the best title? การหาชื่อเรื่องที่ดีที่สุด
What s the best title? การหาชื่อเรื่องที่ดีที่สุด
Aj Muu
ตัวอย่างบทสรุปผู้บริหารโครงการบ่มเพาะธุรกิจ
ตัวอย่างบทสรุปผู้บริหารโครงการบ่มเพาะธุรกิจ
Cherie Pink
Part of speed (8part)
Part of speed (8part)
skyblue729
บทที่ 2
บทที่ 2
Tanakorn Ngonmanee
Training plan new 4
Training plan new 4
สุบิน แพทย์รัตน์
โครงงาȨทคโนโลยีสารสȨทศ
โครงงาȨทคโนโลยีสารสȨทศ
Inam Chatsanova
ข้อสอบปฏิบัติ Microsoft Word
ข้อสอบปฏิบัติ Microsoft Word
Supreeyar philarit
บทที่ 2 ระบบต่างๆในร่างกายมนุษย์ หมุนเวียนเลือด
บทที่ 2 ระบบต่างๆในร่างกายมนุษย์ หมุนเวียนเลือด
Pinutchaya Nakchumroon
หน่วยที่ 2 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ 2
หน่วยที่ 2 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ 2
อรยา ม่วงมนตรี
Reading for comprehension
Reading for comprehension
ruttiporn
บทที่3๶รื่องอิน๶ทอร์๶Ȩตและการใช้งาน
บทที่3๶รื่องอิน๶ทอร์๶Ȩตและการใช้งาน
Piyanoot Ch
รายงาน๶ทคโนโลยีคอมพิว๶ตอร์
รายงาน๶ทคโนโลยีคอมพิว๶ตอร์
พัน พัน
ปัจจัยในการเจริญเติบโตของมนุษย์ .pdf
ปัจจัยในการเจริญเติบโตของมนุษย์ .pdf
daonoi
(Big One) C Language - 05 ฟังก์ชันจัดกาลิงค์ลิสต์แบบทางเดียว
(Big One) C Language - 05 ฟังก์ชันจัดกาลิงค์ลิสต์แบบทางเดียว
Kittinan Noimanee
(Big One) C Language - 06 ฟังก์ชันจัดกาลิงค์ลิสต์แบบสองทาง
(Big One) C Language - 06 ฟังก์ชันจัดกาลิงค์ลิสต์แบบสองทาง
Kittinan Noimanee

More Related Content

What's hot (20)

แบบฝึกหัด เรื่อง การเขียนผังงาน
แบบฝึกหัด เรื่อง การเขียนผังงาน
Saengpech Kumpo
แบบทดสอบ Xcel ปวส. 1-3 (ตอนที่ 2).doc
แบบทดสอบ Xcel ปวส. 1-3 (ตอนที่ 2).doc
AnuwatBhumthavorn
แผȨารจัึϸาร๶รียนรู้เพื่อพัոาทักษะการพูด
แผȨารจัึϸาร๶รียนรู้เพื่อพัոาทักษะการพูด
Wanida Keawprompakdee
แผนการจัดการเรียนรู้ ส่วนประกอบคอมพิวเตอร์ ม.2
แผนการจัดการเรียนรู้ ส่วนประกอบคอมพิวเตอร์ ม.2
พงศธร ภักดี
การดูแลอุปกรณ์คอมพิว๶ตอร์
การดูแลอุปกรณ์คอมพิว๶ตอร์
duanpen homkajuy
ข้อสอบปลายภาค50ข้อexcel 07 2558
ข้อสอบปลายภาค50ข้อexcel 07 2558
peter dontoom
What s the best title? การหาชื่อเรื่องที่ดีที่สุด
What s the best title? การหาชื่อเรื่องที่ดีที่สุด
Aj Muu
ตัวอย่างบทสรุปผู้บริหารโครงการบ่มเพาะธุรกิจ
ตัวอย่างบทสรุปผู้บริหารโครงการบ่มเพาะธุรกิจ
Cherie Pink
Part of speed (8part)
Part of speed (8part)
skyblue729
บทที่ 2
บทที่ 2
Tanakorn Ngonmanee
Training plan new 4
Training plan new 4
สุบิน แพทย์รัตน์
โครงงาȨทคโนโลยีสารสȨทศ
โครงงาȨทคโนโลยีสารสȨทศ
Inam Chatsanova
ข้อสอบปฏิบัติ Microsoft Word
ข้อสอบปฏิบัติ Microsoft Word
Supreeyar philarit
บทที่ 2 ระบบต่างๆในร่างกายมนุษย์ หมุนเวียนเลือด
บทที่ 2 ระบบต่างๆในร่างกายมนุษย์ หมุนเวียนเลือด
Pinutchaya Nakchumroon
หน่วยที่ 2 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ 2
หน่วยที่ 2 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ 2
อรยา ม่วงมนตรี
Reading for comprehension
Reading for comprehension
ruttiporn
บทที่3๶รื่องอิน๶ทอร์๶Ȩตและการใช้งาน
บทที่3๶รื่องอิน๶ทอร์๶Ȩตและการใช้งาน
Piyanoot Ch
รายงาน๶ทคโนโลยีคอมพิว๶ตอร์
รายงาน๶ทคโนโลยีคอมพิว๶ตอร์
พัน พัน
ปัจจัยในการเจริญเติบโตของมนุษย์ .pdf
ปัจจัยในการเจริญเติบโตของมนุษย์ .pdf
daonoi
แบบฝึกหัด เรื่อง การเขียนผังงาน
แบบฝึกหัด เรื่อง การเขียนผังงาน
Saengpech Kumpo
แบบทดสอบ Xcel ปวส. 1-3 (ตอนที่ 2).doc
แบบทดสอบ Xcel ปวส. 1-3 (ตอนที่ 2).doc
AnuwatBhumthavorn
แผȨารจัึϸาร๶รียนรู้เพื่อพัոาทักษะการพูด
แผȨารจัึϸาร๶รียนรู้เพื่อพัոาทักษะการพูด
Wanida Keawprompakdee
แผนการจัดการเรียนรู้ ส่วนประกอบคอมพิวเตอร์ ม.2
แผนการจัดการเรียนรู้ ส่วนประกอบคอมพิวเตอร์ ม.2
พงศธร ภักดี
การดูแลอุปกรณ์คอมพิว๶ตอร์
การดูแลอุปกรณ์คอมพิว๶ตอร์
duanpen homkajuy
ข้อสอบปลายภาค50ข้อexcel 07 2558
ข้อสอบปลายภาค50ข้อexcel 07 2558
peter dontoom
What s the best title? การหาชื่อเรื่องที่ดีที่สุด
What s the best title? การหาชื่อเรื่องที่ดีที่สุด
Aj Muu
ตัวอย่างบทสรุปผู้บริหารโครงการบ่มเพาะธุรกิจ
ตัวอย่างบทสรุปผู้บริหารโครงการบ่มเพาะธุรกิจ
Cherie Pink
Part of speed (8part)
Part of speed (8part)
skyblue729
โครงงาȨทคโนโลยีสารสȨทศ
โครงงาȨทคโนโลยีสารสȨทศ
Inam Chatsanova
ข้อสอบปฏิบัติ Microsoft Word
ข้อสอบปฏิบัติ Microsoft Word
Supreeyar philarit
บทที่ 2 ระบบต่างๆในร่างกายมนุษย์ หมุนเวียนเลือด
บทที่ 2 ระบบต่างๆในร่างกายมนุษย์ หมุนเวียนเลือด
Pinutchaya Nakchumroon
หน่วยที่ 2 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ 2
หน่วยที่ 2 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ 2
อรยา ม่วงมนตรี
Reading for comprehension
Reading for comprehension
ruttiporn
บทที่3๶รื่องอิน๶ทอร์๶Ȩตและการใช้งาน
บทที่3๶รื่องอิน๶ทอร์๶Ȩตและการใช้งาน
Piyanoot Ch
รายงาน๶ทคโนโลยีคอมพิว๶ตอร์
รายงาน๶ทคโนโลยีคอมพิว๶ตอร์
พัน พัน
ปัจจัยในการเจริญเติบโตของมนุษย์ .pdf
ปัจจัยในการเจริญเติบโตของมนุษย์ .pdf
daonoi

Similar to โครงสร้างข้อมูลแบบลิงค์ลิสต์ (linklist) (20)

(Big One) C Language - 05 ฟังก์ชันจัดกาลิงค์ลิสต์แบบทางเดียว
(Big One) C Language - 05 ฟังก์ชันจัดกาลิงค์ลิสต์แบบทางเดียว
Kittinan Noimanee
(Big One) C Language - 06 ฟังก์ชันจัดกาลิงค์ลิสต์แบบสองทาง
(Big One) C Language - 06 ฟังก์ชันจัดกาลิงค์ลิสต์แบบสองทาง
Kittinan Noimanee
Ep4
Ep4
Charudech Kongmesook
(Big One) C Language - 04 เปลี่ยนตำแหน่งการชี้ของpointer
(Big One) C Language - 04 เปลี่ยนตำแหน่งการชี้ของpointer
Kittinan Noimanee
การจัดเรียงข้อมูล (sorting)
การจัดเรียงข้อมูล (sorting)
tumetr
ใบความรู้ที่ 1.4
ใบความรู้ที่ 1.4
Orapan Chamnan
งาȨำเสนอ1
งาȨำเสนอ1
Ploy StopDark
ความรู้เบื้องต้น๶กี่ยวกับโครงสร้างྺ้อมูลและอัลกอริทึม
ความรู้เบื้องต้น๶กี่ยวกับโครงสร้างྺ้อมูลและอัลกอริทึม
waradakhantee
Unit3.4
Unit3.4
ศิริวัฒน์ ภาภิรมย์
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
Naphamas
บทที่ 1 แนวคิดทั่วไป๶กี่ยวกับฐาȨ้อมูล
บทที่ 1 แนวคิดทั่วไป๶กี่ยวกับฐาȨ้อมูล
Rungnapa Rungnapa
(Big One) C Language - 05 ฟังก์ชันจัดกาลิงค์ลิสต์แบบทางเดียว
(Big One) C Language - 05 ฟังก์ชันจัดกาลิงค์ลิสต์แบบทางเดียว
Kittinan Noimanee
(Big One) C Language - 06 ฟังก์ชันจัดกาลิงค์ลิสต์แบบสองทาง
(Big One) C Language - 06 ฟังก์ชันจัดกาลิงค์ลิสต์แบบสองทาง
Kittinan Noimanee
(Big One) C Language - 04 เปลี่ยนตำแหน่งการชี้ของpointer
(Big One) C Language - 04 เปลี่ยนตำแหน่งการชี้ของpointer
Kittinan Noimanee
การจัดเรียงข้อมูล (sorting)
การจัดเรียงข้อมูล (sorting)
tumetr
ใบความรู้ที่ 1.4
ใบความรู้ที่ 1.4
Orapan Chamnan
ความรู้เบื้องต้น๶กี่ยวกับโครงสร้างྺ้อมูลและอัลกอริทึม
ความรู้เบื้องต้น๶กี่ยวกับโครงสร้างྺ้อมูลและอัลกอริทึม
waradakhantee
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
Naphamas
บทที่ 1 แนวคิดทั่วไป๶กี่ยวกับฐาȨ้อมูล
บทที่ 1 แนวคิดทั่วไป๶กี่ยวกับฐาȨ้อมูล
Rungnapa Rungnapa
Ad

More from tumetr (20)

ขั้นตอนการสร้าง Facebook page
ขั้นตอนการสร้าง Facebook page
tumetr
ตั้งรับ ขับเคลื่อนธุรกิจและผลักดันคนไอทีไทยสู่-Aec-2015
ตั้งรับ ขับเคลื่อนธุรกิจและผลักดันคนไอทีไทยสู่-Aec-2015
tumetr
Aec rit v.1.0-facebook
Aec rit v.1.0-facebook
tumetr
Aec rit v.1.0-po_p
Aec rit v.1.0-po_p
tumetr
The system-analysis-and-design
The system-analysis-and-design
tumetr
การพัฒนาและติดตั้งระบบ(System implementation)
การพัฒนาและติดตั้งระบบ(System implementation)
tumetr
พจȨȨกรมྺ้อมูล
พจȨȨกรมྺ้อมูล
tumetr
ส่วนจัดการสื่อประสานผู้ใช้(User interface-management)
ส่วนจัดการสื่อประสานผู้ใช้(User interface-management)
tumetr
ระบบ (System)
ระบบ (System)
tumetr
An approach-to-planning-software-projects
An approach-to-planning-software-projects
tumetr
An introduction
An introduction
tumetr
Huffman
Huffman
tumetr
ทรัพยากรมนุษย์และการออกแบบงาน
ทรัพยากรมนุษย์และการออกแบบงาน
tumetr
กลยุทธ์การ๶ลือกทำ๶ลที่ตั้งสถานประกอบการ
กลยุทธ์การ๶ลือกทำ๶ลที่ตั้งสถานประกอบการ
tumetr
กลยุทธ์การวางผังสถานประกอบการ
กลยุทธ์การวางผังสถานประกอบการ
tumetr
หน่วยที่ 5.3.2 การสุขาภิบาลอาหาร
หน่วยที่ 5.3.2 การสุขาภิบาลอาหาร
tumetr
หน่วยที่ 5.3.1 สารปนเปื้อนในอาหาร
หน่วยที่ 5.3.1 สารปนเปื้อนในอาหาร
tumetr
หน่วยที่ 5.2 ผลิตภัณฑ์อาหารเพื่อสุขภาพ
หน่วยที่ 5.2 ผลิตภัณฑ์อาหารเพื่อสุขภาพ
tumetr
avl tree ,b-tree
avl tree ,b-tree
tumetr
การวิเคราะห์อัลกอริทึม(algorithm analysis)
การวิเคราะห์อัลกอริทึม(algorithm analysis)
tumetr
ขั้นตอนการสร้าง Facebook page
ขั้นตอนการสร้าง Facebook page
tumetr
ตั้งรับ ขับเคลื่อนธุรกิจและผลักดันคนไอทีไทยสู่-Aec-2015
ตั้งรับ ขับเคลื่อนธุรกิจและผลักดันคนไอทีไทยสู่-Aec-2015
tumetr
Aec rit v.1.0-facebook
Aec rit v.1.0-facebook
tumetr
Aec rit v.1.0-po_p
Aec rit v.1.0-po_p
tumetr
The system-analysis-and-design
The system-analysis-and-design
tumetr
การพัฒนาและติดตั้งระบบ(System implementation)
การพัฒนาและติดตั้งระบบ(System implementation)
tumetr
พจȨȨกรมྺ้อมูล
พจȨȨกรมྺ้อมูล
tumetr
ส่วนจัดการสื่อประสานผู้ใช้(User interface-management)
ส่วนจัดการสื่อประสานผู้ใช้(User interface-management)
tumetr
ระบบ (System)
ระบบ (System)
tumetr
An approach-to-planning-software-projects
An approach-to-planning-software-projects
tumetr
An introduction
An introduction
tumetr
ทรัพยากรมนุษย์และการออกแบบงาน
ทรัพยากรมนุษย์และการออกแบบงาน
tumetr
กลยุทธ์การ๶ลือกทำ๶ลที่ตั้งสถานประกอบการ
กลยุทธ์การ๶ลือกทำ๶ลที่ตั้งสถานประกอบการ
tumetr
กลยุทธ์การวางผังสถานประกอบการ
กลยุทธ์การวางผังสถานประกอบการ
tumetr
หน่วยที่ 5.3.2 การสุขาภิบาลอาหาร
หน่วยที่ 5.3.2 การสุขาภิบาลอาหาร
tumetr
หน่วยที่ 5.3.1 สารปนเปื้อนในอาหาร
หน่วยที่ 5.3.1 สารปนเปื้อนในอาหาร
tumetr
หน่วยที่ 5.2 ผลิตภัณฑ์อาหารเพื่อสุขภาพ
หน่วยที่ 5.2 ผลิตภัณฑ์อาหารเพื่อสุขภาพ
tumetr
avl tree ,b-tree
avl tree ,b-tree
tumetr
การวิเคราะห์อัลกอริทึม(algorithm analysis)
การวิเคราะห์อัลกอริทึม(algorithm analysis)
tumetr
Ad

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