Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
เรื่อง การแก้ไขปัญหาด้วยกระบวนการเทคโนโลยีสารสนเทศ
Advertisements

ชนิดของข้อมูลในโปรแกรม Interactive C
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
โครงสร้างของโหนด Successor = Node ที่อยู่ถัดไปจาก Node ที่ใช้งานอยู่
บทที่ 6 โครงสร้างข้อมูลลิ้งค์ลิสต์
[][Data][] [][1][]<->[][5][]<->[][3][]<->[][8][null]
บทที่ 6 โครงสร้างข้อมูลลิ้งค์ลิสต์
บทที่ 5 โครงสร้างข้อมูลคิว
Hashing Function มีหลายฟังก์ชั่น การเลือกใช้ขึ้นอยู่กับความเหมาะสมของข้อมูล ตัวอย่างของฟังก์ชั่นแฮชมีดังนี้ 1. Mod คือการนำค่าคีย์มา mod ด้วยค่า n ใด.
Chapter 1 โครงสร้างข้อมูลและอัลกอริธึมส์
Ordering and Liveness Analysis ลำดับและการวิเคราะห์บอกความ เป็นอยู่หรือความตาย.
Functional programming part II
Data Type part.III.
Stack.
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
Data structure & Algorithms
Structure.
ผังงานโปรแกรม (Program Flowchart)
แผนผัง FlowChart Flow Chart คือ ขั้นตอนที่นำผลที่ได้จากการกำหนดและการ วิเคราะห์ปัญหามาเขียนเป็นแผนภาพหรือสัญลักษณ์ ประโยชน์ของผังงาน -ช่วยลำดับขั้นตอนการทำงานของโปรแกรม.
วิชา การออกแบบและพัฒนาซอฟต์แวร์
Linked-List (รายการโยง)
ตัวแปรชุด.
Lecture no. 6 Structure & Union
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
หน่วยที่ 2 วิธีการออกแบบโปรแกรม
Arrays.
Arrays.
ตัวแปรแบบโครงสร้าง.
คิวQueue Circular Queue.
C Programming Lecture no. 9 Structure.
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
Searching.
ข้อมูลพื้นฐานและตัวดำเนินการ
อาร์เรย์และข้อความสตริง
ตัวแปร (variable) ตัวแปร เป็นชื่อที่เราตั้งขึ้น เพื่อให้คอมพิวเตอร์เตรียมที่ใน หน่วยความจำไว้สำหรับเก็บข้อมูลที่นำไปประมวลผล การตั้งชื่อตัวแปร ชื่อตัวแปรในภาษา.
ลิ้งค์ลิสต์วงกลม วิธีการที่ทำให้สามารถวิ่งจาก โหนดหนึ่งจะไม่สามารถชี้กลับไป ยังโหนดอื่น ๆ ได้ในลิ้งค์ลิสต์ โดยให้ตัวชี้ของโหนดสุดท้ายซึ่ง เดิมเป็นค่า NULL.
โครงสร้างการจัดเก็บข้อมูลเชิงกายภาพ
ตัวแปรกับชนิดของข้อมูล
โครงสร้างข้อมูลแบบคิว
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะทำที่ปลายใดปลายหนึ่งของ Queue ในขณะที่การลบข้อมูลออกจากคิว.
วิธีสายงานวิกฤต Critical Path Method แบบ Activity on Arrow.
การเขียนผังงาน จุดประสงค์ 1.อธิบายความของผังงานได้
List ADTs By Pantharee S..
โครงสร้างข้อมูลคืออะไร ?
Linked List (ลิงค์ลิสต์)
บทที่ 5 Link List Link List.
Linked List List is group of nodes that consists of data and link.
บทที่ 3 การทำงานกับฟอร์ม (Form)
ลิงค์ลิสต์ (Linked List)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
หลักการเขียนโปรแกรม ( )
โครงสร้างข้อมูลแบบรายการโยง (Link List)
ข้อมูลแบบโครงสร้างและยูเนียน
School of Information Communication Technology,
รายการโยง (linked lists) หอยทอด 30 ข้าวผัด 30 ไก่ย่าง 50 เนื้อทอด 30
การออกแบบส่วนติดต่อกับผู้ใช้ User Interface Design
หลักการเขียนโปรแกรม ( )
โครงสร้างข้อมูล Queues
โครงสร้างข้อมูลแบบลิงก์ลิสต์
หลักการเขียนโปรแกรม ( )
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
โครงสร้างข้อมูลแบบ สแตก (stack)
ต้นไม้ Tree [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Int isEmpty ( node **ptr_head) ; parameter ชื่อของตัวแปรลิสต์ที่จะตรวจสอบว่า ว่างหรือไม่ return value มีได้ 2 สถานะ คือ ว่าง (1) หรือ ไม่ ว่าง (0) body.
การเขียนโปรแกรมแบบลำดับ
Week 5 While and Do-While loop (Control Structure 2)
รายการ (Lis t) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong.
หลักการทั่วไปเกี่ยวกับการเขียนโปรแกรม
ใบสำเนางานนำเสนอ:

Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT

การจัดเก็บข้อมูลในหน่วยความจำหลัก 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

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

Lists : แบบ Static Array -5 9 6 3 LOGO LAUKHWAN NGAMPRASIT

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

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

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

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

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

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

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

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

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

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

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

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

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

ทำการค้นหาโหนดที่ต้องการลบ การลบโหนด 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

การลบโหนด (ต่อ) 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

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

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

Do Don’ t LOGO LAUKHWAN NGAMPRASIT