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

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

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

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


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

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

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

3 โครงสร้างข้อมูลแบบลิงค์ลิสต์ ( Linked List)  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 การสร้างรายการว่าง 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 23NULL

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

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

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

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

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

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

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


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

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


Ads by Google