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

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

อาจารย์ พิศิษฐ์ นาคใจ มหาวิทยาลัยราชภัฏอุตรดิตถ์ โครงสร้างข้อมูลแบบลิงก์ ลิสต์

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


งานนำเสนอเรื่อง: "อาจารย์ พิศิษฐ์ นาคใจ มหาวิทยาลัยราชภัฏอุตรดิตถ์ โครงสร้างข้อมูลแบบลิงก์ ลิสต์"— ใบสำเนางานนำเสนอ:

1 อาจารย์ พิศิษฐ์ นาคใจ มหาวิทยาลัยราชภัฏอุตรดิตถ์ โครงสร้างข้อมูลแบบลิงก์ ลิสต์

2 ลิงก์ลิสต์ Linked List เป็นโครงสร้างที่จัดเก็บด้วยโหนด (node) ต่อเนื่องกันไป ภายในโหนดจะ ประกอบด้วย 2 ส่วนคือ ส่วนที่จัดเก็บข้อมูล (Data) และส่วนที่ยังจัดเก็บพอยเตอร์ (Pointer) ไปยังโหนดถัดไป ยกเว้นตัวสุดท้ายจะเก็บเป็น Null Pointer A Z W6 12 E nul l 66

3 เริ่มต้นโหนดแรกของ Linklist เริ่มที่ Address 77 ภายในเก็บข้อมูลตัวอักษร A ไว้ภายใน และ ยังเก็บ Address 30 ซึ่งเป็นโหนดถัดไปอีกด้วย A Z W8 12 E nul l 66

4 Dummy Node โดยทั่วไปแล้วจะมี Dummy Node เพื่อเป็นตัว ชี้ตำแหน่งเริ่มต้นไว้เพื่อบอกให้ทราบว่า Linklist นี้มีตำแหน่งเริ่มที่ตำแหน่งใด แต่ภายใน Dummy node จะมีข้อมูล Address เริ่มต้นของ Linklist เพียงตัวเดียว null Hea d Dummy Node ชนิดที่มี หนึ่ง Pointer

5 Dummy Node Dummy Node ชนิดที่ 2 เป็นชนิดที่มี 2 พอย เตอร์ โดยที่เก็บ Address ทั้งหัวและหางของ LinkList โดยที่ Head จะชี้ไป Address เริ่มต้น ของ Linklist และ Tail จะชี้ไปยัง Address สุดท้ายของ Linklist ข้อดีคือ กรณีที่จะทำการแทรกข้อมูลท้ายสุด ไม่ จำเป็นต้องวิ่งไปใน List เพื่อหา Address สุดท้าย สามารถใช้ข้อมูลจาก Dummy Node ได้เลย A Z W8 12 E nul l 66 hea d tail

6 พอยน์เตอร์และหน่วยความจำใน ภาษาซี ตัวแปลพอยน์เตอร์คือ ตัวแปรที่เก็บที่อยู่ของ ข้อมูลเอาไว้ เช่นถ้าต้องการสร้างตัวแปรพอยน์ เตอร์ที่ชี้ไปยังบล๊อคของหน่วยความจำที่เก็บค่า จำนวนเต็มเอาไว้ ในภาษาซีเขียนได้ดังนี้ int *p

7 คำสั่งพื้นฐานในภาษาซี malloc เป็นฟังก์ชั่นในการสร้างเนื้อที่ใหม่ใน หน่วยความจำ malloc จะทำการหาเนื้อที่ใน หน่วยความจำ sizeof เป็นฟังก์ชั่นที่ค้นหาจำนวนขนาดกลุ่ม ข้อมูลนั้นๆ (Struct) type case ใช้กำหนดชนิดข้อมูลนอกเหนือจาก ที่มีอยู่แล้ว free เป็นฟังก์ชั่นที่ทำการคืนหน่วยความจำ ให้กับ Memory

8 ตัวอย่างการใช้งานพอยเตอร์ int *A,*B; A = (int *)malloc(sizeof(int)); B = (int *)malloc(sizeof(int)); *A = 5; *B = 17; free(A); A = B; A B ?? A 5 B 17 A B A B

9 การประกาศโครงสร้างของ List typedef struct node_ptr{ int data; struct node_ptr *next; };

10 การท่องไปใน Linked List การท่องไปในลิตส์ คือการเข้าถึงสมาชิกข้อมูล จากตัวแรกถึงตัวสุดท้ายโดยใช้ Pointer อาจจะ เป็นการสืบค้นข้อมูลภายใน List เราไม่สามารถ ไปยังสมาชิกอื่นๆ ได้โดยที่ไม่ผ่านตัวที่ 1 ถึงตัว ที่ n ได้ A Z W8 12 E nul l 66 H

11 การท่องไปใน Linked List เมื่อเราต้องการเลื่อน Dummy Node ไปหา Address ถัดไป จะทำให้ไม่สามารถย้อนกลับ มายัง ต้น ของ list ได้ดังนั้นต้องมี dummy Node อีกตัวเพื่อเก็บ Address เริ่มต้นของ List ไว้ เมื่อเริ่มท่องไปใน List เราต้องให้ tmp มีค่า Address เดียวกับ H เสียก่อนเพื่อจะเริ่มค้นหา ข้อมูลจากตัวแรกไปเรื่อยๆ A Z W8 12 E nul l 66 H tm p

12 การท่องไปใน Linked List ต่อ 1. จากรูปเราให้ H เก็บตำแหน่งต้น List ไว้และให้ Tmp เป็นคนเลื่อนตำแหน่ง (tmp = H) 2. วิธีการเลื่อน คือให้ tmp เก็บค่า Address ของ ตำแหน่งถัดไป (tmp = tmp->next) 3. จากนั้นให้ Tmp เลื่อนไปยังตัวแหน่งถัดไป เรื่อยๆ จนหว่าจะเจอค่า null เป็นอันสิ้นสุด A Z W8 12 E nul l 66 H tm p

13 ตัวอย่างภาษาซี tmp = H; while(tmp != null){ printf(“%d”,tmp->data); tmp = tmp->next; }

14 โอเปอร์เรชันที่ใช้ใน Linklist สำหรับโอเปอร์เรชั่นมี 2 ชนิดคือ 1. การเพิ่มข้อมูล 2. การลบข้อมูล การเพิ่มข้อมูล เป็นการเพิ่ม Node ใหม่ที่บรรจุ ข้อมูลเข้ามาใน List การเพิ่มข้อมูลจะแบ่ง ออกเป็น 1. การเพิ่มด้านหน้า 2. การเพิ่มด้านหลัง 3. การเพิ่มตรงกลาง

15 การเพิ่มข้อมูล ขั้นตอนการเพิ่มข้อมูล 1. ประกาศตัวแปลพอยเตอร์ node_ptr new; 2. ทำการจัดหาหน่วยความจำ new = (node_ptr *)(malloc(sizeof(node_ptr))) 3. นำข้อมูลใส่เข้าไปใน List new->element = 10; 4. นำโหนดเข้าสู่ List

16 การแทรก List ที่ตำแหน่งต่างๆ 1. แทรกด้านหน้า 2. แทรกด้านหลัง 3. แทรกระหว่างตำแหน่ง

17 การลบข้อมูลของ List การลบข้อมูล เป็นการลบข้อมูลที่อยู่ในสายของ List โดยจะทำการ ค้นหาข้อมูลภายใน List เมื่อ เจอก็จะทำการลบข้อมูล แต่เมื่อลบข้อมูลแล้ว เราจำเป็นต้องทำการ ปรับแต่ง List เพื่อให้ List เป็นข้อมูลที่ถูกต้องและยังสามารถใช้งานได้ ต่อไป

18 การลบ List ที่ตำแหน่งต่างๆ 1. ลบ List ที่อยู่ด้านหน้าสุด 2. ลบ List ที่อยู่ด้านหลังสุด 3. ลบ List ที่อยู่ตรงกลาง

19 Quiz จงบอกข้อดีของการใช้ Linklist มา 2 ข้อ จงบอกข้อเสียของการใช้ Linklist มา 3 ข้อ


ดาวน์โหลด ppt อาจารย์ พิศิษฐ์ นาคใจ มหาวิทยาลัยราชภัฏอุตรดิตถ์ โครงสร้างข้อมูลแบบลิงก์ ลิสต์

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


Ads by Google