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

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

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

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


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

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

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

3 โหนด สุดท้าย n il NU LL n il NU LL สำหรับภาษา pascal สำหรับ ภาษา C

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

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

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

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

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

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) A B C D A B C D list NUL L list 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 การแทรกโหนดต่อจาก โหนดใดๆ BCADB p CD newnode newnode->link = p->link CD pnewnode … … …… … … AA B p->link = newnode newnode p

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

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


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

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


Ads by Google