โครงสร้างข้อมูลแบบลิงก์ลิสต์

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Advertisements

Pointers. Why have pointers? / pointers ทำให้ฟังก์ชันหรือส่วนของ โปรแกรมสามารถใช้งานข้อมูลร่วมกันได้ / ใช้ pointers ในการสร้างโครงสร้างข้อมูลที่ ซับซ้อนได้
Introduction to C Introduction to C.
VBScript.
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
ตัวแปรประเภทตัวชี้ (Pointer)
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
ฟังก์ชั่นในภาษาซี.
โครงสร้างของโหนด Successor = Node ที่อยู่ถัดไปจาก Node ที่ใช้งานอยู่
บทที่ 6 โครงสร้างข้อมูลลิ้งค์ลิสต์
[][Data][] [][1][]<->[][5][]<->[][3][]<->[][8][null]
บทที่ 6 โครงสร้างข้อมูลลิ้งค์ลิสต์
พอยน์เตอร์ (Pointer) Chapter Introduction to Programming
บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูลชนิดพอยท์เตอร์
ตัวแปรชนิดโครงสร้าง (Structure)
Functional programming part II
Data Type part.III.
Structure Programming
ชนิดของข้อมูลและตัวดำเนินการ
Data structure & Algorithms
Structure.
JavaScript.
โครงสร้างภาษาซี.
Linked-List (รายการโยง)
ตัวชี้ P O I N T E R Created By Tasanawan Soonklang
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
Arrays.
คิวQueue Circular Queue.
ฟังก์ชันของ PHP ฟังก์ชันคือ โปรแกรมย่อยที่สามารถประมวลผล และ คืนผลลัพธ์จาการประมวลผลนั้นสู่โปรแกรมหลักได้ ซึ่งจำเป็นในการเขียนโปรแกรมเพื่อช่วยให้การทำงานมีประสิทธิภาพที่สูงขึ้น.
Seree Chinodom Recordset Object Seree Chinodom Computer Science, BUU.
C Programming Lecture no. 9 Structure.
Selected Topics in IT (Java)
ข้อมูลพื้นฐานและตัวดำเนินการ
ลิ้งค์ลิสต์วงกลม วิธีการที่ทำให้สามารถวิ่งจาก โหนดหนึ่งจะไม่สามารถชี้กลับไป ยังโหนดอื่น ๆ ได้ในลิ้งค์ลิสต์ โดยให้ตัวชี้ของโหนดสุดท้ายซึ่ง เดิมเป็นค่า NULL.
อาร์เรย์ (Array).
อาร์เรย์ (Array).
Lecture 7 ฟังก์ชัน To do: Hand back assignments
ตัวแปร (Variable) คือ ชื่อที่ตั้งขึ้นเพื่อเก็บข้อมูลในหน่วยความจำ สามารถเก็บข้อมูลชนิดใดก็ ได้ ลักษณะที่สำคัญ ค่าที่จัดเก็บ เมื่อปิดโปรแกรมข้อมูลจะหายไป.
บทที่ 7 คำสั่งสำหรับเขียนโปรแกรม
Introduction to C Language
ตัวแปรกับชนิดของข้อมูล
โครงสร้างข้อมูลแบบคิว
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ปฏิบัติการครั้งที่ 10 pointer. หน่วยความจำ หน่วยความจำนั้นเสมือนเป็นช่องว่างไว้เก็บ ของที่มีหมายเลขประจำติดไว้ที่แต่ละช่อง เพื่อใช้ในการระบุตำแหน่งของช่องได้
วิธีสายงานวิกฤต Critical Path Method แบบ Activity on Arrow.
Linked List (ลิงค์ลิสต์)
ตัวแปรกับชนิดของข้อมูล
Week 12 Engineering Problem 2
บทที่ 5 Link List Link List.
Computer Programming for Engineers
Linked List List is group of nodes that consists of data and link.
ความหมาย การประกาศ และการใช้
ลิงค์ลิสต์ (Linked List)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
โครงสร้างข้อมูลแบบรายการโยง (Link List)
บทที่ 9 พอยเตอร์. สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อ การศึกษาเท่านั้น พอยเตอร์ (Pointer) พอยเตอร์คือต้นฉบับของชนิดข้อมูล เป็นชนิด ข้อมูลที่สร้างจากข้อมูลมาตรฐานชนิดหนึ่ง.
รายการโยง (linked lists) หอยทอด 30 ข้าวผัด 30 ไก่ย่าง 50 เนื้อทอด 30
โครงสร้างข้อมูล Queues
หลักการเขียนโปรแกรม ( )
โครงสร้าง ภาษาซี.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Int isEmpty ( node **ptr_head) ; parameter ชื่อของตัวแปรลิสต์ที่จะตรวจสอบว่า ว่างหรือไม่ return value มีได้ 2 สถานะ คือ ว่าง (1) หรือ ไม่ ว่าง (0) body.
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
รายการ (Lis t) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong.
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
ใบสำเนางานนำเสนอ:

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

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

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

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

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

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

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

ตัวอย่างการใช้งานพอยเตอร์ 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 17 A B 17

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

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

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

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

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

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

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

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

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

การลบ List ที่ตำแหน่งต่างๆ

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