ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยPuttipat Pureesrisak ได้เปลี่ยน 10 ปีที่แล้ว
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
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.