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

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

Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.

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


งานนำเสนอเรื่อง: "Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT."— ใบสำเนางานนำเสนอ:

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 . . . . . . . . tmpnext = pnext;
คือขั้นตอนการต่อส่วนนี้ tmp 5 p 3 8 LOGO

16 การแทรกโหนด (ต่อ) LOGO . . . . . . . . tmp ขั้นต่อมาทำดังนี้
pnext= 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


ดาวน์โหลด ppt Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.

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


Ads by Google