วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Another one of Data Structure
Advertisements

Bansomdej Chaopraya Rajabhat University
Pointers. Why have pointers? / pointers ทำให้ฟังก์ชันหรือส่วนของ โปรแกรมสามารถใช้งานข้อมูลร่วมกันได้ / ใช้ pointers ในการสร้างโครงสร้างข้อมูลที่ ซับซ้อนได้
Arrays.
โครงสร้างข้อมูลสแตก มีลักษณะเป็นรายการในแนวเชิงเส้น(Linear List)รูปแบบหนึ่ง และมีข้อกำหนดให้ชุดปฏิบัติการสามารถเพิ่มและลบรายการเพียงด้านเดียว ซึ่งเป็นด้านบนสุดของสแตก(Top.
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
Computer Programming 1 LAB Test 3
โครงสร้างของโหนด Successor = Node ที่อยู่ถัดไปจาก Node ที่ใช้งานอยู่
บทที่ 6 โครงสร้างข้อมูลลิ้งค์ลิสต์
[][Data][] [][1][]<->[][5][]<->[][3][]<->[][8][null]
โครงสร้างข้อมูลสแตก มีลักษณะเป็นรายการในแนวเชิงเส้น(Linear List)รูปแบบหนึ่ง และมีข้อกำหนดให้ชุดปฏิบัติการสามารถเพิ่มและลบรายการเพียงด้านเดียว ซึ่งเป็นด้านบนสุดของสแตก(Top.
บทที่ 6 โครงสร้างข้อมูลลิ้งค์ลิสต์
บทที่ 5 โครงสร้างข้อมูลคิว
ครั้งที่ 12 การค้นหาข้อมูล (Searching)
สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)
โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures
Functional programming part II
Stack.
AVL Tree.
1. จงหาผลลัพธ์จากโปรแกรมต่อไปนี้
Data structure & Algorithms
ลักษณะการทำงานของ Stack
การแก้ปัญหาด้วยคอมพิวเตอร์
บรรยายครั้งที่ 3: Queue
วิชา การออกแบบและพัฒนาซอฟต์แวร์
Linked-List (รายการโยง)
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
Arrays.
Arrays.
คิวQueue Circular Queue.
Seree Chinodom Recordset Object Seree Chinodom Computer Science, BUU.
ลิ้งค์ลิสต์วงกลม วิธีการที่ทำให้สามารถวิ่งจาก โหนดหนึ่งจะไม่สามารถชี้กลับไป ยังโหนดอื่น ๆ ได้ในลิ้งค์ลิสต์ โดยให้ตัวชี้ของโหนดสุดท้ายซึ่ง เดิมเป็นค่า NULL.
โครงสร้างข้อมูลแบบคิว
คิว ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue
สแตค(stack) โครงสร้างข้อมูลแบบ Stack - การสร้าง Stack
คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะทำที่ปลายใดปลายหนึ่งของ Queue ในขณะที่การลบข้อมูลออกจากคิว.
List ADTs By Pantharee S..
Linked List (ลิงค์ลิสต์)
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
บทที่ 5 Link List Link List.
Linked List List is group of nodes that consists of data and link.
การเขียนโปรแกรม PHP เชื่อมต่อกับ MySQL
ลิงค์ลิสต์ (Linked List)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
กองซ้อน ยอดกองซ้อน (stack).
โครงสร้างข้อมูลแบบกองซ้อน (Stack)
โครงสร้างข้อมูลแบบรายการโยง (Link List)
School of Information Communication Technology,
รายการโยง (linked lists) หอยทอด 30 ข้าวผัด 30 ไก่ย่าง 50 เนื้อทอด 30
โครงสร้างข้อมูล Queues
โครงสร้างข้อมูลแบบลิงก์ลิสต์
หน่วยที่ 4 โครงสร้างโปรแกรมภาษาซี
รูปร่างเครือข่ายคอมพิวเตอร์ จัดทำโดย เด็กชาย คณิศร อ้อยกลาง เลขที่ 36 ม.2/5 เสนอ อ.สายฝน เอกกันทา โรงเรียนจักรคำคณาทร จ.ลำพูน.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Int isEmpty ( node **ptr_head) ; parameter ชื่อของตัวแปรลิสต์ที่จะตรวจสอบว่า ว่างหรือไม่ return value มีได้ 2 สถานะ คือ ว่าง (1) หรือ ไม่ ว่าง (0) body.
รายการ (Lis t) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong.
ต้นไม้ Tree [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
DATA STRUCTURE AND ALGORITHM Linked List.
Linked List (2) Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
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.
รายการ(List) [2] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Mark Allen Weiss, Addison Wesley
int isEmpty ( node **ptr_head) ;
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Linked List Lecturer : Kritawan Siriboon, Room no. 913
Linked List (ต่อ) Lecturer : Kritawan Siriboon, Room no. 913
ใบสำเนางานนำเสนอ:

วิชา COSC2202 โครงสร้างข้อมูล (Data Structure) โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)

โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List) ลิงค์ลิสต์เป็นการจัดเก็บชุดข้อมูลเชื่อมโยงต่อเนื่องกันไปตามลำดับ ซึ่งอาจอยู่ ในลักษณะแบบเชิงเส้นตรง (linear) หรือ ไม่เป็นเส้นตรง (nonlinear) ก็ได้ ซึ่ง ในลิสต์จะประกอบไปด้วยข้อมูลที่เรียกว่าโหนด (node) ในหนึ่งโหนดจะ ประกอบด้วยส่วนของข้อมูลที่ต้องการจัดเก็บ เรียกว่าส่วน Info และส่วนที่เป็น พอยน์เตอร์ที่ชี้ไปยังโหนดถัดไป (Link) หรือชี้ไปยังโหนดอื่นๆที่อยู่ในลิสต์ หากไม่มีโหนดที่อยู่ถัดไป ส่วนที่เป็นพอยน์เตอร์หรือ Link จะเก็บค่า NULL หรือ NILL ใช้สัญลักษณ์ ^

โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)

โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List) โหนด (Node) โครงสร้างแบบ Linked list แบ่งได้หลายแบบตามวิธีการชี้ไปยังโหนดต่างๆ เช่น Singly Linked list , Doubly Linked list , Multi-Linked list Singly Linked list Singly Linked list จะประกอบด้วยโหนดที่มีพอยน์เตอร์ชี้ไปในทิศทางเดียว คือชี้ไปยัง โหนดถัดไป

โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List) Doubly Linked list Doubly linked list ประกอบด้วยส่วนของ Info และ พอยน์เตอร์ที่ชี้ไป 2 ทิศทาง คือ ชี้ไปยังโหนดถัดไป และชี้ไปยังโหนดก่อนหน้า ดังนั้นเราจึง สามารถทำการอ่านข้อมูลได้ 2 วิธี คือ การอ่านไปข้างหน้า และอ่านไปทาง ข้างหลัง

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

การสร้างรายการว่าง numlist typedef struct listnode{ // create list node type int value; struct listnode *next; } LISTNODE; LISTNODE *numlist=NULL; numlist =(LISTNODE *)malloc(sizeof(LISTNODE)); numlist

ทดสอบว่ารายการว่างหรือไม่ // return 1 if list is empty, else return 0. int islempty(LISTNODE *head) { return (head == NULL); } numlist = NULL

การเพิ่มสมาชิกใหม่ลงในรายการ Insert first element Insert element on head of list Insert element between list Insert element on end of list

Insert first element numlist = getnode(); // head of list numlist->value = 23; numlist->next = NULL; numlist 23 NULL

Insert element on head of list NEW = getnode(); // head of list NEW->value = 20; NEW->next = numlist; numlist = NEW; NEW 20 numlist 23 NULL

Insert element between list NEW = getnode(); NEW->value = 24; NEW->next = numlist->next ; numlist->next = NEW; numlist 23 25 NEW 24 NULL

Insert element on end of list NEW = getnode(); NEW->value = 25; NEW->next = NULL; numlist->next = NEW; numlist 23 NULL 25 NULL NEW

การลบสมาชิกออกจากรายการ delete element on head of list delete element between list delete element on end of list

delete element on head of list 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 } 23 24 25 backup NULL

delete element 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 } 23 24 25 backup NULL

delete element on end of list 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

การเข้าถึงสมาชิกของรายการ 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