ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยCantana Juntasa ได้เปลี่ยน 10 ปีที่แล้ว
1
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT
2
การจัดเก็บข้อมูลในหน่วยความจำหลัก
Static memory allocation เช่น การประกาศตัวแปร int a, b; char s[10], c; static float f; Dynamic memory allocation เช่น การใช้ pointer และมีการจองเนื้อที่ในหน่วยความจำด้วยคำสั่ง malloc(); int *p ; p = (int *)malloc(sizeof(int)*2) ; LOGO
3
Lists เป็นโครงสร้างข้อมูลแบบ Linear สามารถ implement ได้ 2 แบบ
1. แบบ Static implement ด้วย array 2. แบบ Dynamic implement ด้วย linked list Basic Operations - Insertion - Initial - Deletion - isEmpty - Find isLast LOGO LAUKHWAN NGAMPRASIT
4
Lists : แบบ Static Array
-5 9 6 3 LOGO LAUKHWAN NGAMPRASIT
5
Lists : แบบ Dynamic Linked list
Linked List เป็นการนำเอาโครงสร้างที่เรียกว่าโหนด มาต่อเชื่อมกันเป็นลูกโซ่ ช่วยให้การจัดเก็บมีความยืดหยุ่นมากขึ้น เราสามารถทำการเพิ่มโหนดได้โดยไม่ต้องคำนึงถึงขีดจำกัดเหมือนกันการเก็บข้อมูลแบบ array Linked list คล้ายๆ กับขบวนรถไฟ ตรงที่ว่าการที่จะเกิดเป็นขบวนรถไฟได้จะต้องมีการนำโบกี้รถไฟหลายๆ โบกี้มาต่อกัน ขบวนจะสั้นหรือยาวก็ขึ้นอยู่กับโบกี้เหล่านี้ หากผู้โดยสารโบกี้แรกๆ ต้องการที่จะไปยังโบกี้สุดท้ายก็ต้องเดินผ่านโบกี้อื่นๆ ระหว่างทางด้วย LOGO LAUKHWAN NGAMPRASIT
6
การทำงาน การสร้างลิสต์ว่าง การทดสอบว่าลิสต์ว่างหรือไม่
การท่องไปในลิสต์หรือส่วนของลิสต์ โดยการเข้าถึงสมาชิก และประมวลผลสมาชิกแบบลำดับ การเพิ่มสมาชิกใหม่ลงในลิสต์ การลบสมาชิกออกจากลิสต์ LOGO
7
แสดงโครงสร้างข้อมูล Linked-List
ลักษณะของลิงค์ลิสต์ 12 59 7 24 node Data Link แสดงโครงสร้างข้อมูล Linked-List LOGO
8
คุณสมบัติของลิสต์ ภายในแต่ละโหนดจะแบ่งออกเป็นอย่างน้อย 2 ฟิลด์ คือข้อมูลและแอดเดรสหรือที่อยู่ของโหนดถัดไป ลิงค์ลิสต์เป็นการนำข้อมูลแต่ละโหนดมาจัดเรียงต่อกันเป็นลิสต์ โดยสิ่งที่เป็นตัวกำหนดลำดับก็คือ ฟิลด์แอดเดรสของแต่ละโหนด การเข้าถึงลิงค์ลิสต์จะต้องชี้ pointer ไปโหนดแรกเสมอ ฟิลด์แอดเดรสของโหนดสุดท้ายจะต้องกำหนดให้เป็น null ซึ่งเป็นการกำหนดให้จบลิงค์ลิสต์ ลิงค์ลิสต์ที่ไม่มีโหนดอยู่ภายในเรียกว่า ลิสต์ว่าง (Empty List หรือ null List) 12 59 7 24 LOGO
9
สัญลักษณ์ที่แสดงว่าเป็นโหนดสุดท้าย
Null (a) (d) (e) /// (b) (c) LOGO
10
การประกาศโครงสร้างโหนดของลิงค์ลิสต์
struct node { int info; struct node *next; }; typedef struct node *ptrnode; typedef ptrnode position,list; LOGO
11
การสร้างลิงค์ลิสต์ ตัวชี้ของโหนดสุดท้ายของรายการมีค่าเป็น null ดังนั้นจึงเป็นการง่ายที่จะสร้างรายการว่างขึ้นมาใหม่ โดยการกำหนดค่าเริ่มต้นให้เป็น null LOGO
12
5 20 12 TMP L L P TMP->info = 5; header list L; position TMP;
position P; L = (struct node *)malloc(sizeof(struct node)); L->next = NULL; P = L; position TMP; TMP =(struct node *)malloc(sizeof(struct node)); TMP->next = P->next; TMP->info = 5; P->next = TMP; TMP->info = 20; position TMP; TMP =(struct node *)malloc(sizeof(struct node)); TMP->next = P->next; P->next = TMP; LOGO LAUKHWAN NGAMPRASIT
13
การเข้าถึง (Access) ข้อมูลในโหนด
การเข้าถึงโหนดใดๆ จะต้องเริ่มต้นเข้าทางพอยเตอร์ที่ชี้อยู่โหนดแรกเสมอ แล้วไล่ไปตามลิ้งค์ที่ชี้บอกว่าโหนดถัดไปอยู่ ณ ที่ใด การเข้าถึงโหนดใดๆ มีจุดประสงค์เพื่อนำข้อมูลที่มันเก็บไว้ไปประมวลผล ไม่ว่าจะเป็น บวก ลบ คูณ หาร หรือนำออกไปพิมพ์หรือแสดงทางหน้าจอ รวมทั้งเพื่อทำการ เพิ่ม ลบ แทรกโหนดด้วย 7 14 24 59 LOGO
14
การแทรกโหนด tmp 5 โหนดใหม่ที่จะแทรก p 3 8 LOGO
15
การแทรกโหนด (ต่อ) LOGO . . . . . . . . tmpnext = pnext;
คือขั้นตอนการต่อส่วนนี้ tmp 5 p 3 8 LOGO
16
การแทรกโหนด (ต่อ) LOGO . . . . . . . . tmp ขั้นต่อมาทำดังนี้
pnext= tmp จะเกิดการเชื่อมโยงดังนี้ 5 p การเชื่อมโยงตรงนี้หายไป 3 8 LOGO
17
การแทรกโหนด (ต่อ) p tmp 3 5 8 การแทรกโหนดสำเร็จ LOGO
18
ทำการค้นหาโหนดที่ต้องการลบ
การลบโหนด p temp seek c d h m k b p temp seek c d h m k b p temp seek c d h m k b ทำการค้นหาโหนดที่ต้องการลบ LOGO
19
การลบโหนด (ต่อ) tmp->next = seek->next; free(seek); LOGO k m b m
temp seek m k b tmp->next = seek->next; temp seek m b free(seek); LOGO
20
ลิสต์เชื่อมโยงแบบวงกลม (Circular list)
เป็นการนำเอา Singly linked list มาทำให้เป็นวงกลม โดยการให้ Pointer ของโหนดสุดท้ายชี้กลับไปยังโหนดแรก การเข้าถึงข้อมูลจะไม่มีจุดจบ แต่จะวนซ้ำผ่านมายังโหนดเดิมได้ P โหนดล่าสุด = โหนดสุดท้าย LOGO
21
ลิสต์เชื่อมโยงสองทาง (Doubly linked list)
มีคุณสมบัติคล้ายลิสต์เชื่อมโยงทางเดียว เพียงแต่การเข้าถึงข้อมูลสามารถทำได้ 2 ทิศทาง คือ จากซ้ายไปขวาหรือจากขวาไปซ้าย LLINK data RLINK LOGO
22
Do Don’ t LOGO LAUKHWAN NGAMPRASIT
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.