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

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

รายการโยง (linked lists) หอยทอด 30 ข้าวผัด 30 ไก่ย่าง 50 เนื้อทอด 30

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


งานนำเสนอเรื่อง: "รายการโยง (linked lists) หอยทอด 30 ข้าวผัด 30 ไก่ย่าง 50 เนื้อทอด 30"— ใบสำเนางานนำเสนอ:

1 รายการโยง (linked lists) หอยทอด 30 ข้าวผัด 30 ไก่ย่าง 50 เนื้อทอด 30
ข้าวผัด 30 ก๋วยเตี๋ยว 25 ไก่ย่าง 50 ตับย่าง 30 หอยทอด 30 เนื้อทอด 30

2 list A B C D E โหนดแรก โหนดสุดท้าย โหนด ตัวชี้ ข้อมูล

3 โหนดสุดท้าย nil nil สำหรับภาษา pascal NULL NULL สำหรับภาษา C

4 การสร้างโหนดในภาษา c ใช้ตัวแปรโครงสร้าง(structure) ในการกำหนดลักษณะโหนด struct <ชื่อโหนด> { <data type> <variable> ; <data type> <variable> ; ... struct <ชื่อโหนด> *<ตัวแปร> ; } ตัวอย่าง struct node { int info; struct node *link ; } 2 ไบต์ ไบต์ info link ข้อมูล ตัวชี้

5 ฟังก์ชันขอพื้นที่โหนด
ตัวแปรตัวชี้ = malloc(sizeof(จำนวนไบต์)) ขอพื้นที่หน่วยความจำเท่ากับจำนวนไบต์ที่กำหนด โดยมี ตัวแปรตัวชี้ เก็บค่าเลขที่อยู่ของพื้นที่นั้น เช่น struct node *p , *q q = malloc(sizeof(struct node)); p = malloc(sizeof(6)); p q info link info link

6 การอ้างอิงเพื่อบันทึกข้อมูลในโหนด
จะอ้างอิงตัวแปรที่เก็บเลขที่อยู่ของโหนด(ตัวแปรที่ชี้ไปที่โหนด)และชื่อเขตข้อมูล โดยใช้สัญลักษณ์ -> เป็นตัวเชื่อม ตัวแปร->ชื่อเขตข้อมูล q q->link q->info p P->info P->link

7 P P->info = 51; 51 P P P->link = NULL ; NULL หรือ 51 NULL q q->info = 25; 25 q P 25 51 NULL q->link = p;

8 การเข้าถึงข้อมูลในโหนดที่โยงกัน
list 51 25 89 43 NULL list->info คือ 51 list->link->info คือ 25 list->link->link->info คือ 89 list->link->link->link->info คือ 43

9 ฟังก์ชันสร้างรายการโยง
struct node *insert_node(struct node *list,int x) {struct node *newnode , *p; newnode = malloc(sizeof(struct node)); newnode->info = x; newnode->link = NULL; if(list == NULL) list = newnode; else { p = list ; while(p->link != NULL) p = p->link; p->link = newnode; } return list;

10 ฟังก์ชันเข้าถึงรายการโยง
access_list(struct node *list) { struct node *p; { p = list; while(p != NULL) { printf(“%d \n” ,p->info); p = p->link; } return 0;

11 ฟังก์ชันตัดโหนดแรกออกจากรายการโยง
struct node *delete_node(struct node *list, int *x) { if(list != NULL) { *x = list ->info; if(list->link == NULL)list = NULL; else list = list->link; } return list;

12 ฟังก์ชันใช้รายการโยงเป็นกองซ้อน
struct node *push(struct node *top,int x) { struct node *newnode; newnode = malloc(sizeof(struct node)); newnode->info = x; newnode->link = top; top = newnode; return top; }

13 รายการโยงเป็นวง(circular link list)
NULL A B C D list A B C D list->link

14 ฟังก์ชันสร้างรายการโยงเป็นวง
struct node *insert_clist(struct node *list,int x) {struct node *newnode ; newnode = malloc(sizeof(struct node)); newnode->info = x; if(list == NULL)newnode->link = newnode; else {newnode->link = list->link; list->link = newnode; } list = newnode; return list;

15 ฟังก์ชันตัดโหนดแรกออกจากรายการโยงเป็นวง
struct node *delete_clist(struct node *list, int *x) { if(list != NULL) { *x = list->link->info; if(list == list->link)list = NULL; else list->link = list->link->link; } return list;

16 การแทรกโหนดต่อจากโหนดใดๆ
newnode p A B C D p newnode A B C D newnode->link = p->link newnode p A B C D p->link = newnode

17 การตัดโหนดที่ต่อจากโหนดใดๆ
p A B C D p A B C D p->link = p->link->link

18 แบบฝึกหัด list NULL 45 12 38 57 94 list 45 12 38 57 94
1.จงเขียนฟังก์ชันเพื่อนับจำนวนโหนดในรายการโยง 2.จงเขียนฟังก์ชันเพื่อตัดโหนดสุดท้ายออกจากรายการโยง 3.จงเขียนฟังก์ชันเพื่อตัดโหนดในลำดับที่ k ใดๆ(ถ้ามี) ออกจากรายการโยง 4.จงเขียนฟังก์ชันเพื่อนับจำนวนโหนดในรายการโยงเป็นวง 5.จงเขียนฟังก์ชันเพื่อตัดโหนดสุดท้ายออกจากรายการโยงเป็นวง 6.จงเขียนฟังก์ชันเพื่อเปลี่ยนรายการโยงให้เป็นรายการโยงเป็นวงที่มีตัวชี้รายการชี้ที่โหนดสุดท้าย 7.จงเขียนฟังก์ชันเพื่อเปลี่ยนรายการโยงเป็นวงให้เป็นรายการปกติ 8.จงเขียนฟังก์ชันเพื่อกลับทิศทางรายการโยง ตัวอย่าง list NULL 45 12 38 57 94 เมื่อจบฟังก์ชัน list 45 12 38 57 94 NULL


ดาวน์โหลด ppt รายการโยง (linked lists) หอยทอด 30 ข้าวผัด 30 ไก่ย่าง 50 เนื้อทอด 30

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


Ads by Google