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

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

Linked-List ( รายการโยง ) อ. ธรรมศักดิ์ เธียรนิเวศน์

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


งานนำเสนอเรื่อง: "Linked-List ( รายการโยง ) อ. ธรรมศักดิ์ เธียรนิเวศน์"— ใบสำเนางานนำเสนอ:

1 Linked-List ( รายการโยง ) อ. ธรรมศักดิ์ เธียรนิเวศน์

2 File Management & Data Structure2 Agenda Static List  CreateList( การสร้างรายการว่าง )  isEmpty( ทดสอบว่ารายการว่างหรือไม่ )  insertList( การเพิ่มสมาชิกใหม่ลงในรายการ )  deleteList( การลบสมชิกออกจากรายการ )  Traverse( การเข้าถึงสมาชิกของรายการ ) Dynamic List (Linked-List)  CreateList( การสร้างรายการว่าง )  isEmpty( ทดสอบว่ารายการว่างหรือไม่ )  insertList( การเพิ่มสมาชิกใหม่ลงในรายการ )  deleteList( การลบสมชิกออกจากรายการ )  Traverse( การเข้าถึงสมาชิกของรายการ )

3 File Management & Data Structure3 นักศึกษาสามารถ  อธิบายโครงสร้างข้อมูลแบบ Linked List ได้ ถูกต้อง  เขียนอัลกอริธึม และโปรแกรมด้วยภาษา C ใน การดำเนินการต่าง ๆ ตามโครงสร้างข้อมูลแบบ Linked List ได้ถูกต้องอย่างมีประสิทธิภาพ Objective

4 Static List

5 File Management & Data Structure5 Static List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงใน รายการ ) deleteList( การลบสมชิกออกจากรายการ ) Traverse( การเข้าถึงสมาชิกของรายการ )

6 File Management & Data Structure6 CreateList (static) typedef struct listType{ int size; int value[5]; } LIST; LIST numlist; numlist Size = 0 numlist[0] numlist[1] numlist[2] numlist[3] numlist[4]

7 File Management & Data Structure7 Static List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงใน รายการ ) deleteList( การลบสมชิกออกจากรายการ ) Traverse( การเข้าถึงสมาชิกของรายการ )

8 File Management & Data Structure8 isEmpty (static) // return 1 if list is empty, else return 0. int islempty(LIST dummy) { return (dummy.size == 0); }

9 File Management & Data Structure9 Static List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงใน รายการ ) deleteList( การลบสมชิกออกจากรายการ ) Traverse( การเข้าถึงสมาชิกของรายการ )

10 File Management & Data Structure10 insertList (static) numlist Size = 4 numlist[0] numlist[1] numlist[2] numlist[3] numlist[4] pos for(i=lst.size;i>pos;i--) // re order from last element to pos lst.value[i] = lst.value[i-1]; numlist.value[pos] = 24; // insert dummy numlist.size++; // increase list size Size = 5   

11 File Management & Data Structure11 Static List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงใน รายการ ) deleteList( การลบสมชิกออกจาก รายการ ) Traverse( การเข้าถึงสมาชิกของรายการ )

12 File Management & Data Structure12 deleteList (static) numlist Size = 5 numlist[0] numlist[1] numlist[2] numlist[3] numlist[4] pos for(i=pos;i< numlist.size-1;i++) // re order from pos to last // element. numlist.value[i] = numlist.value[i+1]; numlist.size--; // decrease list size Size = 4  

13 File Management & Data Structure13 Static List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงใน รายการ ) deleteList( การลบสมชิกออกจากรายการ ) Traverse( การเข้าถึงสมาชิกของ รายการ )

14 File Management & Data Structure14 Traverse (static) void printlst(LIST dummy) { int i; for(i=0;i

15 Dynamic List (Linked-List) value มูลค่าตัวชี้บอกที่อยู่ของโหนดถัดไป

16 File Management & Data Structure16 Advantages of Linked-List Size is unlimited (depends on memory space) More efficient when insert or delete element of the list.

17 File Management & Data Structure17 Dynamic List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงใน รายการ ) deleteList( การลบสมชิกออกจากรายการ ) Traverse( การเข้าถึงสมาชิกของรายการ )

18 File Management & Data Structure18 CreateList (dynamic) typedef struct listnode{ // create list node type int value; struct listnode *next; } LISTNODE; LISTNODE *numlist=NULL; numlist =(LISTNODE *)malloc(sizeof(LISTNODE)); numlist

19 File Management & Data Structure19 Dynamic List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงใน รายการ ) deleteList( การลบสมชิกออกจากรายการ ) Traverse( การเข้าถึงสมาชิกของรายการ )

20 File Management & Data Structure20 isEmpty (dynamic) // return 1 if list is empty, else return 0. int islempty(LISTNODE *head) { return (head == NULL); } numlist = NULL

21 File Management & Data Structure21 Dynamic List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงในรายการ )  Insert first element  Insert element on head of list  Insert element between list  Insert element on end of list deleteList( การลบสมชิกออกจากรายการ ) Traverse( การเข้าถึงสมาชิกของรายการ )

22 File Management & Data Structure22 insertList (first element) numlist = getnode(); // head of list numlist->value = 23; numlist->next = NULL; numlist 23NULL

23 File Management & Data Structure23 Dynamic List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงในรายการ )  Insert first element  Insert element on head of list  Insert element between list  Insert element on end of list deleteList( การลบสมชิกออกจากรายการ ) Traverse( การเข้าถึงสมาชิกของรายการ )

24 File Management & Data Structure24 insertList (on head) NEW = getnode(); // head of list NEW->value = 20; NEW->next = numlist; NEW 20 numlist23NULL numlist = NEW;

25 File Management & Data Structure25 Dynamic List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงในรายการ )  Insert first element  Insert element on head of list  Insert element between list  Insert element on end of list deleteList( การลบสมชิกออกจากรายการ ) Traverse( การเข้าถึงสมาชิกของรายการ )

26 File Management & Data Structure26 insertList (between list) NEW = getnode(); NEW->value = 24; NEW->next = numlist->next ; numlist23 numlist->next = NEW; 25 NULL NEW 24

27 File Management & Data Structure27 Dynamic List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงในรายการ )  Insert first element  Insert element on head of list  Insert element between list  Insert element on end of list deleteList( การลบสมชิกออกจากรายการ ) Traverse( การเข้าถึงสมาชิกของรายการ )

28 File Management & Data Structure28 insertList (on last) NEW = getnode(); NEW->value = 25; NEW->next = NULL; NEW 25 numlist23NULL numlist->next = NEW; NULL

29 File Management & Data Structure29 Dynamic List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงใน รายการ ) deleteList( การลบสมชิกออกจาก รายการ )  delete element on head of list  delete element between list  delete element on end of list Traverse( การเข้าถึงสมาชิกของรายการ )

30 File Management & Data Structure30 deleteList (on head) 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 numlist

31 File Management & Data Structure31 Dynamic List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงใน รายการ ) deleteList( การลบสมชิกออกจาก รายการ )  delete element on head of list  delete element between list  delete element on end of list Traverse( การเข้าถึงสมาชิกของรายการ )

32 File Management & Data Structure32 deleteList (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 ptr backup

33 File Management & Data Structure33 Dynamic List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงใน รายการ ) deleteList( การลบสมชิกออกจาก รายการ )  delete element on head of list  delete element between list  delete element on end of list Traverse( การเข้าถึงสมาชิกของรายการ )

34 File Management & Data Structure34 deleteList (on last) 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

35 File Management & Data Structure35 Dynamic List CreateList( การสร้างรายการว่าง ) isEmpty( ทดสอบว่ารายการว่างหรือไม่ ) insertList( การเพิ่มสมาชิกใหม่ลงใน รายการ ) deleteList( การลบสมชิกออกจากรายการ ) Traverse( การเข้าถึงสมาชิกของ รายการ )

36 File Management & Data Structure36 Traverse (dynamic) void printlst(LISTNODE *numlist) { LISTNODE *ptr=numlist; while(ptr!=NULL){ printf("%3d",ptr->value); ptr = ptr->next; // next node } NULL 24 ptr numlist

37 File Management & Data Structure37 Dynamic List Advantages  Size is unlimited (depends on memory space)  More efficient when insert or delete element of the list. O(1) Disadvantages  Cannot retrieve previous element.  Function to counting size of list needs to traversing all over the list. O(N)

38 File Management & Data Structure38 Other Linked List Circular Linked List Doubly Linked List Linked List Stack Linked List Queue Linked List Priority Queue

39 Question???


ดาวน์โหลด ppt Linked-List ( รายการโยง ) อ. ธรรมศักดิ์ เธียรนิเวศน์

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


Ads by Google