Linked-List (รายการโยง)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Bansomdej Chaopraya Rajabhat University
Advertisements

Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
Computer Programming 1 LAB Test 3
[][Data][] [][1][]<->[][5][]<->[][3][]<->[][8][null]
ครั้งที่ 12 การค้นหาข้อมูล (Searching)
บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูลชนิดพอยท์เตอร์
โครงสร้างข้อมูลแบบรายการโยง (Linked Lists) Data Structures and Algorithms อ. ธารารัตน์ พวงสุวรรณ คณะวิทยาศาสตร์และศิลปศาสตร์ มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี
Stack.
Stack Holidays/seasonal content.
AVL Tree.
แถวคอย (Queue).
บทนำ.
1. จงหาผลลัพธ์จากโปรแกรมต่อไปนี้
Data structure & Algorithms
ลักษณะการทำงานของ Stack
บรรยายครั้งที่ 3: Queue
บรรยายครั้งที่ 2: Stack
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
คิวQueue Circular Queue.
การวิเคราะห์ประสิทธิภาพของอัลกอริธึม (Performance Analysis)
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
Javascripts.
โครงสร้างข้อมูลแบบคิว
การสร้างฟังก์ชั่นเพื่อพัฒนาโปรแกรม Interactive C
คิว ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue
สแตค(stack) โครงสร้างข้อมูลแบบ Stack - การสร้าง Stack
คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะทำที่ปลายใดปลายหนึ่งของ Queue ในขณะที่การลบข้อมูลออกจากคิว.
STACK ADT By Pantharee S.. Stack Model  A list with the restriction that insertions deletions can be performed in only one position (LIFO)  Push – insert.
List ADTs By Pantharee S..
บทที่ 5 Link List Link List.
Linked List List is group of nodes that consists of data and link.
21 August ดรุณี ศมาวรรตกุล 1 2. ADT List - Unsorted list ADT - list implementation - Sorted List - Circular list - Doubly linked list.
ลิงค์ลิสต์ (Linked List)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
กองซ้อน ยอดกองซ้อน (stack).
โครงสร้างข้อมูลแบบรายการโยง (Link List)
Java collection framework
รายการโยง (linked lists) หอยทอด 30 ข้าวผัด 30 ไก่ย่าง 50 เนื้อทอด 30
โครงสร้างข้อมูลแบบลิงก์ลิสต์
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.
DATA STRUCTURE AND ALGORITHM Linked List.
Linked List (2) Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
QueueQueue Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
Linked List ( ต่อ ) Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
Queue Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
Queue Lecturer : Kritawan Siriboon, Room no. 913
List, Stack, Queue 2018/9/21.
รายการ(List) [2] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Mark Allen Weiss, Addison Wesley
Linked List.
Mark Allen Weiss, Addison Wesley
Queue [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Chapter 9 ตัวชี้ pointer.
Linked List.
int isEmpty ( node **ptr_head) ;
ภาษา C เบื้องต้น.
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
Linked List Lecturer : Kritawan Siriboon, Room no. 913
Queue [2] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Linked List (ต่อ) Lecturer : Kritawan Siriboon, Room no. 913
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
4.4 AVL Trees AVL (Adelson-Velskii and Landis) tree เป็น binary search tree กำกับด้วยเงื่อนไขของการสมดุล และประกันว่า depth ของ tree จะเป็น O(log n) อย่างง่ายที่สุดคือกำหนดว่า.
4 โครงสร้างข้อมูลแบบลิงค์ลิสต์ (LINKED LIST).
ใบสำเนางานนำเสนอ:

Linked-List (รายการโยง) อ.ธรรมศักดิ์ เธียรนิเวศน์

204311 File Management & Data Structure Agenda Static List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) Dynamic List (Linked-List) 204311 File Management & Data Structure

204311 File Management & Data Structure Objective นักศึกษาสามารถ อธิบายโครงสร้างข้อมูลแบบ Linked List ได้ถูกต้อง เขียนอัลกอริธึม และโปรแกรมด้วยภาษา C ในการดำเนินการต่าง ๆ ตามโครงสร้างข้อมูลแบบ Linked List ได้ถูกต้องอย่างมีประสิทธิภาพ 204311 File Management & Data Structure

Static List

204311 File Management & Data Structure Static List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure CreateList (static) typedef struct listType{ int size; int value[5]; } LIST; LIST numlist; numlist Size = 0 numlist[0] numlist[1] numlist[2] numlist[3] numlist[4] 204311 File Management & Data Structure

204311 File Management & Data Structure Static List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure isEmpty (static) // return 1 if list is empty, else return 0. int islempty(LIST dummy) { return (dummy.size == 0); } 204311 File Management & Data Structure

204311 File Management & Data Structure Static List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure insertList (static) numlist[0] numlist[1] numlist[2] numlist[3] numlist[4] 23 25 34 48 Size = 4    numlist 23 24 25 34 48 Size = 5 pos for(i=lst.size;i>pos;i--) // re order from last element to pos lst.value[i] = lst.value[i-1]; numlist.value[pos] = 24; // insert dummy numlist.size++; // increase list size 204311 File Management & Data Structure

204311 File Management & Data Structure Static List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure deleteList (static) numlist[0] numlist[1] numlist[2] numlist[3] numlist[4] 23 24 25 34 48 Size = 5 pos numlist    23 25 34 48 Size = 4 for(i=pos;i< numlist.size-1;i++) // re order from pos to last // element. numlist.value[i] = numlist.value[i+1]; numlist.size--; // decrease list size 204311 File Management & Data Structure

204311 File Management & Data Structure Static List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure Traverse (static) numlist 23 25 34 48 Size = 4 i void printlst(LIST dummy) { int i; for(i=0;i<dummy.size;i++) printf("%3d",dummy.value[i]); } 204311 File Management & Data Structure

Dynamic List (Linked-List) value มูลค่า ตัวชี้บอกที่อยู่ของโหนดถัดไป

Advantages of Linked-List Size is unlimited (depends on memory space) More efficient when insert or delete element of the list. 204311 File Management & Data Structure

204311 File Management & Data Structure Dynamic List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure CreateList (dynamic) typedef struct listnode{ // create list node type int value; struct listnode *next; } LISTNODE; LISTNODE *numlist=NULL; numlist =(LISTNODE *)malloc(sizeof(LISTNODE)); numlist 204311 File Management & Data Structure

204311 File Management & Data Structure Dynamic List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure isEmpty (dynamic) // return 1 if list is empty, else return 0. int islempty(LISTNODE *head) { return (head == NULL); } numlist = NULL 204311 File Management & Data Structure

204311 File Management & Data Structure Dynamic List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) Insert first element Insert element on head of list Insert element between list Insert element on end of list deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

insertList (first element) numlist = getnode(); // head of list numlist->value = 23; numlist->next = NULL; numlist 23 NULL 204311 File Management & Data Structure

204311 File Management & Data Structure Dynamic List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) Insert first element Insert element on head of list Insert element between list Insert element on end of list deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure insertList (on head) NEW = getnode(); // head of list NEW->value = 20; NEW->next = numlist; numlist = NEW; NEW 20 numlist 23 NULL 204311 File Management & Data Structure

204311 File Management & Data Structure Dynamic List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) Insert first element Insert element on head of list Insert element between list Insert element on end of list deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

insertList (between list) NEW = getnode(); NEW->value = 24; NEW->next = numlist->next ; numlist->next = NEW; numlist 23 25 NULL NEW 24 204311 File Management & Data Structure

204311 File Management & Data Structure Dynamic List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) Insert first element Insert element on head of list Insert element between list Insert element on end of list deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure insertList (on last) NEW = getnode(); NEW->value = 25; NEW->next = NULL; numlist->next = NEW; numlist 23 NULL 25 NULL NEW 204311 File Management & Data Structure

204311 File Management & Data Structure Dynamic List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) delete element on head of list delete element between list delete element on end of list Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure deleteList (on head) if( numlist->value == 23 ){ // test value of head node backup = numlist; // backup head node numlist = numlist->next; // move head to next node free(backup); // free backup node } numlist 23 backup 24 25 NULL 204311 File Management & Data Structure

204311 File Management & Data Structure Dynamic List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) delete element on head of list delete element between list delete element on end of list Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

deleteList (between list) ptr = ptr->next; // move ptr to next node if( (ptr->next)->value == 24 ){ // test value of next node backup = ptr->next; // backup next node ptr->next = (ptr->next)->next; // point next node to skip 1 node free(backup); // free backup node } ptr 23 24 25 backup NULL 204311 File Management & Data Structure

204311 File Management & Data Structure Dynamic List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) delete element on head of list delete element between list delete element on end of list Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure deleteList (on last) while(ptr->next!=NULL){ ptr = ptr->next; // move ptr to next node if( (ptr->next)->value == 25 ){ // test value of next node backup = ptr->next; // backup next node ptr->next = (ptr->next)->next; // point next node to skip 1 node free(backup); // free backup node break; } ptr backup 23 24 25 NULL 204311 File Management & Data Structure

204311 File Management & Data Structure Dynamic List CreateList(การสร้างรายการว่าง) isEmpty(ทดสอบว่ารายการว่างหรือไม่) insertList(การเพิ่มสมาชิกใหม่ลงในรายการ) deleteList(การลบสมชิกออกจากรายการ) Traverse(การเข้าถึงสมาชิกของรายการ) 204311 File Management & Data Structure

204311 File Management & Data Structure Traverse (dynamic) void printlst(LISTNODE *numlist) { LISTNODE *ptr=numlist; while(ptr!=NULL){ printf("%3d",ptr->value); ptr = ptr->next; // next node } ptr numlist 23 24 25 NULL 204311 File Management & Data Structure

204311 File Management & Data Structure Dynamic List Advantages Size is unlimited (depends on memory space) More efficient when insert or delete element of the list. O(1) Disadvantages Cannot retrieve previous element. Function to counting size of list needs to traversing all over the list. O(N) 204311 File Management & Data Structure

204311 File Management & Data Structure Other Linked List Circular Linked List Doubly Linked List Linked List Stack Linked List Queue Linked List Priority Queue 204311 File Management & Data Structure

Question???