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

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

Linked-List (รายการโยง)

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


งานนำเสนอเรื่อง: "Linked-List (รายการโยง)"— ใบสำเนางานนำเสนอ:

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

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

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

4 Static List

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

6 204311 File Management & Data Structure
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] File Management & Data Structure

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

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

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

10 204311 File Management & Data Structure
insertList (static) numlist[0] numlist[1] numlist[2] numlist[3] numlist[4] 23 25 34 48 Size = 4 numlist 23 24 25 34 48 Size = 5 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 File Management & Data Structure

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

12 204311 File Management & Data Structure
deleteList (static) numlist[0] numlist[1] numlist[2] numlist[3] numlist[4] 23 24 25 34 48 Size = 5 pos numlist 23 25 34 48 Size = 4 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 File Management & Data Structure

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

14 204311 File Management & Data Structure
Traverse (static) numlist 23 25 34 48 Size = 4 i void printlst(LIST dummy) { int i; for(i=0;i<dummy.size;i++) printf("%3d",dummy.value[i]); } File Management & Data Structure

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

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

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

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

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

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

21 204311 File Management & Data Structure
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(การเข้าถึงสมาชิกของรายการ) File Management & Data Structure

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

23 204311 File Management & Data Structure
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(การเข้าถึงสมาชิกของรายการ) File Management & Data Structure

24 204311 File Management & Data Structure
insertList (on head) NEW = getnode(); // head of list NEW->value = 20; NEW->next = numlist; numlist = NEW; NEW 20 numlist 23 NULL File Management & Data Structure

25 204311 File Management & Data Structure
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(การเข้าถึงสมาชิกของรายการ) File Management & Data Structure

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

27 204311 File Management & Data Structure
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(การเข้าถึงสมาชิกของรายการ) File Management & Data Structure

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

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

30 204311 File Management & Data Structure
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 free(backup); // free backup node } numlist 23 backup 24 25 NULL File Management & Data Structure

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

32 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 free(backup); // free backup node } ptr 23 24 25 backup NULL File Management & Data Structure

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

34 204311 File Management & Data Structure
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 free(backup); // free backup node break; } ptr backup 23 24 25 NULL File Management & Data Structure

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

36 204311 File Management & Data Structure
Traverse (dynamic) 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 File Management & Data Structure

37 204311 File Management & Data Structure
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) File Management & Data Structure

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

39 Question???


ดาวน์โหลด ppt Linked-List (รายการโยง)

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


Ads by Google