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

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

LOGO LAUKHWAN NGAMPRASIT1 Lists Data Structure. LOGO 2 การจัดเก็บข้อมูลในหน่วยความจำหลัก Static memory allocation  เช่น การประกาศตัวแปรint a, b; char.

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


งานนำเสนอเรื่อง: "LOGO LAUKHWAN NGAMPRASIT1 Lists Data Structure. LOGO 2 การจัดเก็บข้อมูลในหน่วยความจำหลัก Static memory allocation  เช่น การประกาศตัวแปรint a, b; char."— ใบสำเนางานนำเสนอ:

1 LOGO LAUKHWAN NGAMPRASIT1 Lists Data Structure

2 LOGO 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) ;

3 LOGO 3 Lists เป็นโครงสร้างข้อมูลแบบ Linear สามารถ implement ได้ 2 แบบ 1. แบบ Static implement ด้วย array 2. แบบ Dynamicimplement ด้วย linked list Basic Operations - Insertion - Initial - Deletion - isEmpty - Find - isLast

4 LOGO 4 Lists : แบบ Static Array

5 LOGO 5 Lists : แบบ Dynamic Linked list  Linked List เป็นการนำเอาโครงสร้างที่เรียกว่า โหนด มาต่อเชื่อมกัน เป็นลูกโซ่ ช่วยให้การจัดเก็บมีความยืดหยุ่นมากขึ้น เราสามารถทำ การเพิ่มโหนดได้โดยไม่ต้องคำนึงถึงขีดจำกัดเหมือนกันการเก็บข้อมูล แบบ array  Linked list คล้ายๆ กับขบวนรถไฟ ตรงที่ว่าการที่จะเกิดเป็นขบวน รถไฟได้จะต้องมีการนำโบกี้รถไฟหลายๆ โบกี้มาต่อกัน ขบวนจะสั้น หรือยาวก็ขึ้นอยู่กับโบกี้เหล่านี้ หากผู้โดยสารโบกี้แรกๆ ต้องการที่จะ ไปยังโบกี้สุดท้ายก็ต้องเดินผ่านโบกี้อื่นๆ ระหว่างทางด้วย

6 LOGO 6 การทำงาน  การสร้างลิสต์ว่าง  การทดสอบว่าลิสต์ว่างหรือไม่  การท่องไปในลิสต์หรือส่วนของลิสต์ โดยการเข้าถึงสมาชิก และประมวลผลสมาชิกแบบลำดับ  การเพิ่มสมาชิกใหม่ลงในลิสต์  การลบสมาชิกออกจากลิสต์

7 LOGO 7 ลักษณะของลิงค์ลิสต์ DataLink node แสดงโครงสร้างข้อมูล Linked-List

8 LOGO 8 คุณสมบัติของลิสต์  ภายในแต่ละโหนดจะแบ่งออกเป็นอย่างน้อย 2 ฟิลด์ คือข้อมูลและแอดเดรสหรือที่ อยู่ของโหนดถัดไป  ลิงค์ลิสต์เป็นการนำข้อมูลแต่ละโหนดมาจัดเรียงต่อกันเป็นลิสต์ โดยสิ่งที่เป็น ตัวกำหนดลำดับก็คือ ฟิลด์แอดเดรสของแต่ละโหนด  การเข้าถึงลิงค์ลิสต์จะต้องชี้ pointer ไปโหนดแรกเสมอ  ฟิลด์แอดเดรสของโหนดสุดท้ายจะต้องกำหนดให้เป็น null ซึ่งเป็นการกำหนดให้จบ ลิงค์ลิสต์  ลิงค์ลิสต์ที่ไม่มีโหนดอยู่ภายในเรียกว่า ลิสต์ว่าง (Empty List หรือ null List)

9 LOGO 9 สัญลักษณ์ที่แสดงว่าเป็นโหนดสุดท้าย Null (a) (b) (c) (d) (e) ///

10 LOGO 10 การประกาศโครงสร้างโหนดของลิงค์ลิสต์ struct node {int info; struct node *next; }; typedef struct node *ptrnode; typedef ptrnode position,list;

11 LOGO 11 การสร้างลิงค์ลิสต์  ตัวชี้ของโหนดสุดท้ายของรายการมีค่าเป็น null ดังนั้นจึงเป็นการง่ายที่จะสร้างรายการว่าง ขึ้นมาใหม่ โดยการกำหนดค่าเริ่มต้นให้เป็น null

12 LOGO 12 header L L TMP P list L; 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; position TMP; TMP =(struct node *)malloc(sizeof(struct node)); TMP->next = P->next; TMP->info = 20; P->next = TMP;

13 LOGO 13 การเข้าถึง (Access) ข้อมูลในโหนด  การเข้าถึงโหนดใดๆ จะต้องเริ่มต้นเข้าทางพอยเตอร์ที่ชี้อยู่โหนดแรกเสมอ แล้ว ไล่ไปตาม ลิ้งค์ ที่ชี้บอกว่าโหนดถัดไปอยู่ ณ ที่ใด  การเข้าถึงโหนดใดๆ มีจุดประสงค์เพื่อนำข้อมูลที่มันเก็บไว้ไปประมวลผล ไม่ว่าจะ เป็น บวก ลบ คูณ หาร หรือนำออกไปพิมพ์หรือแสดงทางหน้าจอ รวมทั้งเพื่อทำ การ เพิ่ม ลบ แทรกโหนดด้วย

14 LOGO 14 การแทรกโหนด 5 tmp 3 p 8 โหนดใหม่ที่จะแทรก..

15 LOGO 15 การแทรกโหนด ( ต่อ ) 5 tmp 3 p 8 tmp  next = p  next; คือขั้นตอนการต่อส่วนนี้..

16 LOGO 16 การแทรกโหนด ( ต่อ ) 5 tmp 3 p 8 ขั้นต่อมาทำดังนี้ p  next= tmp จะเกิดการเชื่อมโยงดังนี้ การเชื่อมโยงตรงนี้หายไป..

17 LOGO 17 การแทรกโหนด ( ต่อ ) 5 tmp 3 p 8 การแทรกโหนดสำเร็จ..

18 LOGO 18 การลบโหนด seekptemp cdhm k b seekptemp cdhm k b seekp temp cdhm k b ทำการค้นหาโหนดที่ต้องการลบ

19 LOGO 19 การลบโหนด ( ต่อ ) seek temp m k b tmp->next = seek->next; seek temp m b free(seek);

20 LOGO 20 ลิสต์เชื่อมโยงแบบวงกลม (Circular list)  เป็นการนำเอา Singly linked list มาทำให้เป็นวงกลม โดยการให้ Pointer ของ โหนดสุดท้ายชี้กลับไปยังโหนดแรก  การเข้าถึงข้อมูลจะไม่มีจุดจบ แต่จะวนซ้ำผ่านมายังโหนดเดิมได้ P โหนดล่าสุด = โหนดสุดท้าย

21 LOGO 21 ลิสต์เชื่อมโยงสองทาง (Doubly linked list)  มีคุณสมบัติคล้ายลิสต์เชื่อมโยงทางเดียว เพียงแต่การเข้าถึงข้อมูลสามารถ ทำได้ 2 ทิศทาง คือ จากซ้ายไปขวาหรือจากขวาไปซ้าย LLINK data RLINK LLINK data RLINK LLINK data RLINK LLINK data RLINK

22 LOGO 22 Do Don’ t


ดาวน์โหลด ppt LOGO LAUKHWAN NGAMPRASIT1 Lists Data Structure. LOGO 2 การจัดเก็บข้อมูลในหน่วยความจำหลัก Static memory allocation  เช่น การประกาศตัวแปรint a, b; char.

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


Ads by Google