งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)"— ใบสำเนางานนำเสนอ:

1 วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)

2 โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)
ลิงค์ลิสต์เป็นการจัดเก็บชุดข้อมูลเชื่อมโยงต่อเนื่องกันไปตามลำดับ ซึ่งอาจอยู่ ในลักษณะแบบเชิงเส้นตรง (linear) หรือ ไม่เป็นเส้นตรง (nonlinear) ก็ได้ ซึ่ง ในลิสต์จะประกอบไปด้วยข้อมูลที่เรียกว่าโหนด (node) ในหนึ่งโหนดจะ ประกอบด้วยส่วนของข้อมูลที่ต้องการจัดเก็บ เรียกว่าส่วน Info และส่วนที่เป็น พอยน์เตอร์ที่ชี้ไปยังโหนดถัดไป (Link) หรือชี้ไปยังโหนดอื่นๆที่อยู่ในลิสต์ หากไม่มีโหนดที่อยู่ถัดไป ส่วนที่เป็นพอยน์เตอร์หรือ Link จะเก็บค่า NULL หรือ NILL ใช้สัญลักษณ์ ^

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

4 โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)
โหนด (Node) โครงสร้างแบบ Linked list แบ่งได้หลายแบบตามวิธีการชี้ไปยังโหนดต่างๆ เช่น Singly Linked list , Doubly Linked list , Multi-Linked list Singly Linked list Singly Linked list จะประกอบด้วยโหนดที่มีพอยน์เตอร์ชี้ไปในทิศทางเดียว คือชี้ไปยัง โหนดถัดไป

5 โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)
Doubly Linked list Doubly linked list ประกอบด้วยส่วนของ Info และ พอยน์เตอร์ที่ชี้ไป 2 ทิศทาง คือ ชี้ไปยังโหนดถัดไป และชี้ไปยังโหนดก่อนหน้า ดังนั้นเราจึง สามารถทำการอ่านข้อมูลได้ 2 วิธี คือ การอ่านไปข้างหน้า และอ่านไปทาง ข้างหลัง

6 การทำงานของลิสต์ การสร้างลิสต์ว่าง การทดสอบว่าลิสต์ว่างหรือไม่
การเพิ่มสมาชิกใหม่ลงในลิสต์ การลบสมาชิกออกจากลิสต์ การท่องไปในลิสต์หรือส่วนของลิสต์ โดยการเข้าถึงสมาชิก และประมวลผล สมาชิกแบบลำดับ

7 การสร้างรายการว่าง numlist
typedef struct listnode{ // create list node type int value; struct listnode *next; } LISTNODE; LISTNODE *numlist=NULL; numlist =(LISTNODE *)malloc(sizeof(LISTNODE)); numlist

8 ทดสอบว่ารายการว่างหรือไม่
// return 1 if list is empty, else return 0. int islempty(LISTNODE *head) { return (head == NULL); } numlist = NULL

9 การเพิ่มสมาชิกใหม่ลงในรายการ
Insert first element Insert element on head of list Insert element between list Insert element on end of list

10 Insert first element numlist = getnode(); // head of list
numlist->value = 23; numlist->next = NULL; numlist 23 NULL

11 Insert element on head of list
NEW = getnode(); // head of list NEW->value = 20; NEW->next = numlist; numlist = NEW; NEW 20 numlist 23 NULL

12 Insert element between list
NEW = getnode(); NEW->value = 24; NEW->next = numlist->next ; numlist->next = NEW; numlist 23 25 NEW 24 NULL

13 Insert element on end of list
NEW = getnode(); NEW->value = 25; NEW->next = NULL; numlist->next = NEW; numlist 23 NULL 25 NULL NEW

14 การลบสมาชิกออกจากรายการ
delete element on head of list delete element between list delete element on end of list

15 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 free(backup); // free backup node } 23 24 25 backup NULL

16 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 free(backup); // free backup node } 23 24 25 backup NULL

17 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 free(backup); // free backup node break; } ptr backup 23 24 25 NULL

18 การเข้าถึงสมาชิกของรายการ
void printlst(LISTNODE *numlist) { LISTNODE *ptr=numlist; while(ptr!=NULL){ printf("%3d",ptr->value); ptr = ptr->next; // next node } ptr numlist 23 24 25 NULL


ดาวน์โหลด ppt วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)

งานนำเสนอที่คล้ายกัน


Ads by Google