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

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

รายการ โยง (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; P->link = NULL ; 51 NULL q->link = p; P P q q 51 P P NUL L หรื อ NUL L

8 การเข้าถึงข้อมูลใน โหนดที่โยงกัน 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. จงเขียนฟังก์ชันเพื่อกลับทิศทางรายการโยง ตัวอย่าง li st NUL L เมื่อจบ ฟังก์ชัน NU LL li st


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

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


Ads by Google