SlideShare uma empresa Scribd logo
1 de 18
 โครงสร้างข้อมูลแบบลิงค์ลิสต์
(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

Mais conteúdo relacionado

Mais procurados

บทที่ 13 ระบบสมการ
บทที่ 13 ระบบสมการบทที่ 13 ระบบสมการ
บทที่ 13 ระบบสมการ
krulerdboon
 
แผนการจัดการเรียนรู้ที่ 2 เรื่องชีวิตที่รอดมาได้
แผนการจัดการเรียนรู้ที่ 2 เรื่องชีวิตที่รอดมาได้แผนการจัดการเรียนรู้ที่ 2 เรื่องชีวิตที่รอดมาได้
แผนการจัดการเรียนรู้ที่ 2 เรื่องชีวิตที่รอดมาได้
Mam Chongruk
 
โครงงานคอมพิวเตอร์ (2)
โครงงานคอมพิวเตอร์ (2)โครงงานคอมพิวเตอร์ (2)
โครงงานคอมพิวเตอร์ (2)
peeranat
 
หลักการของไดนาโม
หลักการของไดนาโมหลักการของไดนาโม
หลักการของไดนาโม
panupong
 
กิตติกรรมประกาศ (เสร็จ)
กิตติกรรมประกาศ (เสร็จ)กิตติกรรมประกาศ (เสร็จ)
กิตติกรรมประกาศ (เสร็จ)
Annop Phetchakhong
 
อารายธรรมอียิปต์โบราญ
อารายธรรมอียิปต์โบราญอารายธรรมอียิปต์โบราญ
อารายธรรมอียิปต์โบราญ
SRINAKARIN MOTHER PRINCESS SCHOOL
 
แบบฟอร์ม แฟ้มสะสมผลงานนักเรียน
แบบฟอร์ม แฟ้มสะสมผลงานนักเรียนแบบฟอร์ม แฟ้มสะสมผลงานนักเรียน
แบบฟอร์ม แฟ้มสะสมผลงานนักเรียน
ธนิสร ยางคำ
 

Mais procurados (20)

รายงาน "ทรัพยากรสำคัญสำหรับการพัฒนาเมืองสงขลา"
รายงาน "ทรัพยากรสำคัญสำหรับการพัฒนาเมืองสงขลา"รายงาน "ทรัพยากรสำคัญสำหรับการพัฒนาเมืองสงขลา"
รายงาน "ทรัพยากรสำคัญสำหรับการพัฒนาเมืองสงขลา"
 
แนวทางการจัดการเรียนรู้ รายวิชาเพิ่มเติม "หน้าที่พลเมือง"
แนวทางการจัดการเรียนรู้ รายวิชาเพิ่มเติม "หน้าที่พลเมือง"แนวทางการจัดการเรียนรู้ รายวิชาเพิ่มเติม "หน้าที่พลเมือง"
แนวทางการจัดการเรียนรู้ รายวิชาเพิ่มเติม "หน้าที่พลเมือง"
 
โครงงานเรขาคณิตศาสตร์
โครงงานเรขาคณิตศาสตร์โครงงานเรขาคณิตศาสตร์
โครงงานเรขาคณิตศาสตร์
 
บทที่ 13 ระบบสมการ
บทที่ 13 ระบบสมการบทที่ 13 ระบบสมการ
บทที่ 13 ระบบสมการ
 
แผนการจัดการเรียนรู้ที่ 2 เรื่องชีวิตที่รอดมาได้
แผนการจัดการเรียนรู้ที่ 2 เรื่องชีวิตที่รอดมาได้แผนการจัดการเรียนรู้ที่ 2 เรื่องชีวิตที่รอดมาได้
แผนการจัดการเรียนรู้ที่ 2 เรื่องชีวิตที่รอดมาได้
 
ตัวอย่างแผนการเรียนรู้ BackWard Design คณิตศาสตร์
ตัวอย่างแผนการเรียนรู้ BackWard Design คณิตศาสตร์ตัวอย่างแผนการเรียนรู้ BackWard Design คณิตศาสตร์
ตัวอย่างแผนการเรียนรู้ BackWard Design คณิตศาสตร์
 
ข้อสอบคณิต สายศิลป์
ข้อสอบคณิต สายศิลป์ข้อสอบคณิต สายศิลป์
ข้อสอบคณิต สายศิลป์
 
Copy of 00000564 1 20121226-145401
Copy of 00000564 1 20121226-145401Copy of 00000564 1 20121226-145401
Copy of 00000564 1 20121226-145401
 
รายงานนิราศนรินทร์คำโคลง กลุ่ม 4 ม.4/2
รายงานนิราศนรินทร์คำโคลง กลุ่ม 4 ม.4/2รายงานนิราศนรินทร์คำโคลง กลุ่ม 4 ม.4/2
รายงานนิราศนรินทร์คำโคลง กลุ่ม 4 ม.4/2
 
โครงงานคอมพิวเตอร์ เรื่อง เว็บไซต์ NIFTY HEALTH ด้วยภาษา HTML
โครงงานคอมพิวเตอร์  เรื่อง เว็บไซต์ NIFTY HEALTH ด้วยภาษา HTMLโครงงานคอมพิวเตอร์  เรื่อง เว็บไซต์ NIFTY HEALTH ด้วยภาษา HTML
โครงงานคอมพิวเตอร์ เรื่อง เว็บไซต์ NIFTY HEALTH ด้วยภาษา HTML
 
โครงงานคอมพิวเตอร์ (2)
โครงงานคอมพิวเตอร์ (2)โครงงานคอมพิวเตอร์ (2)
โครงงานคอมพิวเตอร์ (2)
 
แฟ้มสะสมผลงาน กศน.
แฟ้มสะสมผลงาน  กศน.แฟ้มสะสมผลงาน  กศน.
แฟ้มสะสมผลงาน กศน.
 
แบบฝึกทักษะแคลคูลัสเบื้องต้น สว.กจ
แบบฝึกทักษะแคลคูลัสเบื้องต้น สว.กจแบบฝึกทักษะแคลคูลัสเบื้องต้น สว.กจ
แบบฝึกทักษะแคลคูลัสเบื้องต้น สว.กจ
 
สมุดประจำตัวลูกเสือ
สมุดประจำตัวลูกเสือสมุดประจำตัวลูกเสือ
สมุดประจำตัวลูกเสือ
 
หลักการของไดนาโม
หลักการของไดนาโมหลักการของไดนาโม
หลักการของไดนาโม
 
กิตติกรรมประกาศ (เสร็จ)
กิตติกรรมประกาศ (เสร็จ)กิตติกรรมประกาศ (เสร็จ)
กิตติกรรมประกาศ (เสร็จ)
 
โครงการสืบสานพระราชปณิธาน รัชกาลที่ 10
โครงการสืบสานพระราชปณิธาน รัชกาลที่ 10โครงการสืบสานพระราชปณิธาน รัชกาลที่ 10
โครงการสืบสานพระราชปณิธาน รัชกาลที่ 10
 
อารายธรรมอียิปต์โบราญ
อารายธรรมอียิปต์โบราญอารายธรรมอียิปต์โบราญ
อารายธรรมอียิปต์โบราญ
 
อารยธรรมกรีก
อารยธรรมกรีกอารยธรรมกรีก
อารยธรรมกรีก
 
แบบฟอร์ม แฟ้มสะสมผลงานนักเรียน
แบบฟอร์ม แฟ้มสะสมผลงานนักเรียนแบบฟอร์ม แฟ้มสะสมผลงานนักเรียน
แบบฟอร์ม แฟ้มสะสมผลงานนักเรียน
 

Mais de tumetr

ตั้งรับ ขับเคลื่อนธุรกิจและผลักดันคนไอทีไทยสู่-Aec-2015
ตั้งรับ ขับเคลื่อนธุรกิจและผลักดันคนไอทีไทยสู่-Aec-2015ตั้งรับ ขับเคลื่อนธุรกิจและผลักดันคนไอทีไทยสู่-Aec-2015
ตั้งรับ ขับเคลื่อนธุรกิจและผลักดันคนไอทีไทยสู่-Aec-2015
tumetr
 
Aec rit v.1.0-facebook
Aec rit v.1.0-facebookAec 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_pAec rit v.1.0-po_p
Aec rit v.1.0-po_p
tumetr
 
ทรัพยากรมนุษย์และการออกแบบงาน
ทรัพยากรมนุษย์และการออกแบบงานทรัพยากรมนุษย์และการออกแบบงาน
ทรัพยากรมนุษย์และการออกแบบงาน
tumetr
 
กลยุทธ์การเลือกทำเลที่ตั้งสถานประกอบการ
กลยุทธ์การเลือกทำเลที่ตั้งสถานประกอบการกลยุทธ์การเลือกทำเลที่ตั้งสถานประกอบการ
กลยุทธ์การเลือกทำเลที่ตั้งสถานประกอบการ
tumetr
 
กลยุทธ์การวางผังสถานประกอบการ
กลยุทธ์การวางผังสถานประกอบการกลยุทธ์การวางผังสถานประกอบการ
กลยุทธ์การวางผังสถานประกอบการ
tumetr
 

Mais de tumetr (20)

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

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