รายการ(List) [2] ผู้สอน อาจารย์ ยืนยง กันทะเนตร

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
Advertisements

[][Data][] [][1][]<->[][5][]<->[][3][]<->[][8][null]
Linked-List (รายการโยง)
Linked List List is group of nodes that consists of data and link.
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
โครงสร้างข้อมูลแบบรายการโยง (Link List)
Int isEmpty ( node **ptr_head) ; parameter ชื่อของตัวแปรลิสต์ที่จะตรวจสอบว่า ว่างหรือไม่ return value มีได้ 2 สถานะ คือ ว่าง (1) หรือ ไม่ ว่าง (0) body.
รายการ (Lis t) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong.
Array ธนวัฒน์ แซ่ เอียบ. The concept of array อาเรย์ : กลุ่มของข้อมูลที่มีชนิดเดียวกันและถูก จัดเก็บเรียงลำดับต่อเนื่องกัน ตัวแปร x สามารถจัดเก็บค่ามากกว่า.
บทที่ 5 การควบคุมทิศทางการทำงานของโปรแกรม
หลักการโปรแกรม 1 Lecture 14: โปรแกรมย่อย ( การส่งพารามิเตอร์ แบบ pass by reference)
เทคโนโลยีสารสนเทศและการสื่อสาร ช่วยประหยัดค่าใช้จ่าย จัดทำโดย ด. ช. ธนันทร ดอกเกี๋ยง ม.1/2 เลขที่ 8 ด. ญ. เกศกมล ใจปินตา ม.1/2 เลขที่ 10 เสนอ อาจารย์ อรอุมา.
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
หน่วยที่ 5 การเวียนเกิด
DATA STRUCTURE AND ALGORITHM Linked List.
หน่วยที่ 6 แถวลำดับ (Array)
ระดับชั้น มัธยมศึกษาปีที่ ๑ ใช้เพื่อคลิ๊กไปสู่ หน้าถัดไป ใช้เพื่อคลิ๊กกลับ หน้าเดิม ใช้เพื่อคลิ๊กกลับสู่ หน้าหลัก ใช้คลิ๊กเมื่อต้องการ ออกจากระบบ.
Linked List (2) Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
Queue Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
IT Manual SCM June 2016 By Prasert Dokmuang. 2 3.
บทที่ 3 นักวิเคราะห์ระบบและการ วิเคราะห์ระบบ. 1. นักวิเคราะห์ระบบ (System Analysis) 1.1 ความหมายของนักวิเคราะห์ระบบ นักวิเคราะห์ระบบ (System Analysis:
ระบบฐานข้อมูลบริการวิชาการ ของสำนักงานบริการวิชาการ ระเบียบพัฒนาวิชาการ พ. ศ.2551 คู่มือการใช้งานระบบฐานข้อมูล บริการวิชาการ – สะดวก รวดเร็ว ไม่ซับซ้อน.
อาจารย์อภิพงศ์ ปิงยศ Lab 05 : Microsoft Excel (Part3) พท 260 เทคโนโลยีสารสนเทศและการสื่อสารทางการท่องเที่ยว อาจารย์อภิพงศ์ ปิงยศ.
การแพร่กระจายนวัตกรรม Diffusion of Innovation
Burin Rujjanapan Updated:
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
โปรแกรมย่อย อาจารย์สมเกียรติ ช่อเหมือน
Queue [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
หน่วยการเรียนที่ 6 เรื่อง การจัดการฐานข้อมูลด้วย PHP Function
อาจารย์อภิพงศ์ ปิงยศ บทที่ 2 : แบบจำลองเครือข่าย (Network Models) part1 สธ313 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ทางธุรกิจ อาจารย์อภิพงศ์
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
int isEmpty ( node **ptr_head) ;
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
โครงสร้างภาษา C Arduino
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
กลุ่มคำและประโยค ภาษาไทย ม. ๓
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
เรื่อง ความพึงพอใจต่อการให้บริการห้องสมุด
บทที่ 8 การควบคุมโครงการ
Queue [2] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
คำสั่ง Create , Insert, Delete, Update
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
เข้าใจตน เข้าใจสาขา นายจิรภัทร ผดุงกิจ.
แนวทางจัดทำเอกสารประกอบการสอน เพิ่มเติม อีกรูปแบบ
กลุ่มสาระการเรียนรู้วิทยาศาสตร์
วิธีการกำหนดค่า Microsoft SharePoint ของคุณ เว็บไซต์ออนไลน์
ต้นไม้เอวีแอล (AVL Tree)
บริษัท พัฒนาวิชาการ (2535) จำกัด
การประยุกต์ใช้เทคโนโลยีทาง DNA ในเชิง นิติวิทยาศาสตร์
บทที่7 ทฤษฎีกราฟเบื้องต้น
ผู้ช่วยศาสตราจารย์จุฑาวุฒิ จันทรมาลี
วัฏจักรหิน วัฏจักรหิน : วัดวาอาราม หินงามบ้านเรา
หน่วยการเรียนรู้ การเขียนโปรแกรมภาษาขั้นพื้นฐาน เรื่อง โครงสร้างพื้นฐาน HTML 5 รหัส รายวิชา ง23102 การงานอาชีพและเทคโนโลยี 6 กลุ่มสาระ การงานอาชีพและเทคโนโลยี
หน่วยที่ 6 อะเรย์ของอักขระ
Storyboard คืออะไร.
หน่วยการเรียนรู้ที่ 7 สรุปบทเรียน และแนวทางการนำไปใช้
Storyboard คืออะไร.
Tree.
กิจกรรมที่ 7 นายปรีชา ขอวางกลาง
3 โครงสร้างข้อมูลแบบคิว (QUEUE).
Chapter 3 : Array.
Array: One Dimension Programming I 9.
ฟังก์ชันของโปรแกรม Computer Game Programming
4 โครงสร้างข้อมูลแบบลิงค์ลิสต์ (LINKED LIST).
บทที่ 5 พัลส์เทคนิค
โครงการถ่ายทอดเทคโนโลยีถนนรีไซเคิลเพื่อลดขยะพลาสติกใน 4 ภูมิภาค
Class Diagram.
ใบสำเนางานนำเสนอ:

รายการ(List) [2] ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong

หัวข้อวันนี้ Singly-linked list ลิงค์ลิสต์ ชนิดของลิงค์ลิสต์ Singly-linked list ลิงค์ลิสต์ Singly-circularly-linked list ลิงค์ลิสต์วงกลม Doubly-linked list ลิงค์ลิสต์คู่ Doubly-circularly-linked list ลิงค์ลิสต์คู่แบบวงกลม ฟังก์ชันที่เกี่ยวข้อง (จาก operation ของลิงค์ลิสต์) isEmpty() countNode() findTarget()

ชนิดของลิงค์ลิสต์ ในการสร้างลิงค์ลิสต์ขึ้นมาใช้งาน อาจมีการปรับปรุงโครงสร้างข้อมูล (structure data type) ของลิงค์ลิสต์ ให้เหมาะสมกับปัญหาบางชนิด, เร่งความเร็วในการทำงานบางฟังก์ชัน Ex. การ insert ข้อมูลบางรูปแบบ ฯลฯ ที่ควรรู้จักมี 4 ชนิดใหญ่ๆ Singly-linked list ลิงค์ลิสต์ Singly-circularly-linked list ลิงค์ลิสต์วงกลม Doubly-linked list ลิงค์ลิสต์คู่ Doubly-circularly-linked list ลิงค์ลิสต์คู่แบบวงกลม

Singly-linked list (ลิงค์ลิสต์) ลิงค์ลิสต์แบบปกติทั่วไป head ไม่มีข้อมูล head มี 1 โหนด 1 head มีหลายโหนด 1 2 3

Singly-circularly-linked list (ลิงค์ลิสต์วงกลม) เปลี่ยน next ของโหนดสุดท้ายให้ชี้ที่โหนดแรก head ไม่มีข้อมูล มี 1 โหนด head 1 มีหลายโหนด 1 2 3 head

Doubly-linked list (ลิงค์ลิสต์คู่) แต่ละโหนดมี 2 ตัวชี้ (next , back) ที่ชี้ไปยังโหนดถัดไป และโหนดก่อนหน้ามัน ตามลำดับ ต้องเปลี่ยนแปลงในส่วนของการประกาศ Structure Data Type นิดหน่อย Singly-linked list Doubly-linked list struct list { int data ; struct list *next ; } ; typedef struct list node ; struct list { int data ; struct list *next ,*back ; } ; typedef struct list node ;

เพิ่ม pointer เพื่อชี้กลับไปยังโหนดก่อนหน้า head ไม่มีข้อมูล head มี 1 โหนด 1 มีหลายโหนด head 1 2 3

Doubly-circularly-linked list (ลิงค์ลิสต์สองทางแบบวงกลม) head Doubly + circularly ไม่มีข้อมูล 1 head มี 1 โหนด มีหลายโหนด 1 head 2 3

ไม่ว่าจะออกแบบเป็นลิงค์ลิสต์ชนิดใดก็ตาม แต่ก็ยังต้องคงคุณสมบัติพื้นฐานของลิสต์ตาม ADT ไว้ และต้องเขียนฟังก์ชันเพื่อในการ insert/delete ในรูปแบบที่เหมาะสมกับ application ที่นำไปใช้ ไม่ว่าจะเป็นลิงค์ลิสต์ชนิดใด ก็สามารถมีฟังก์ชันที่ทำงานในรูปแบบเดียวกันได้ นิสิตต้องสามารถเขียนฟังก์ชันเพื่อให้ทำงานตามที่กำหนด ไม่ว่าจะใช้สำหรับลิงค์ลิสต์ชนิดใดก็ได้

ฟังก์ชันที่เกี่ยวข้อง (จาก operation ของลิงค์ลิสต์) กำหนดให้ลิงค์ลิสต์ทุกชนิดมีส่วนที่เป็น data คือข้อมูลชนิด int (ลิงค์ลิสต์ใช้เก็บข้อมูลเลขจำนวนเต็มตามตัวอย่างการประกาศใน PowerPoint หน้า 6) ทุกฟังก์ชันสามารถนำไปเขียนเพื่อใช้งานร่วมกับ ลิงค์ลิสต์ชนิดใดก็ได้ *** ในการนำไปใช้งานจริง อาจมีการเพิ่ม/ลด/เปลี่ยนแปลงบางฟังก์ชัน ขึ้นอยู่กับลักษณะงานที่ใช้ แต่ในคอร์สนี้ จะยกตัวอย่างการทำงาน 9 ฟังก์ชัน

insertFirst() – แทรกโหนดใหม่ไว้ลงด้านหน้าลิสต์ insertLast() – แทรกโหนดใหม่ต่อท้ายลิสต์ insert() – แทรกโหนดใหม่ต่อท้ายโหนดที่มีข้อมูลตรงกับที่กำหนด deleteFirst() – ลบ(ดึง)โหนดแรกของลิสต์ออก deleteLast() – ลบ(ดึง)โหนดสุดท้ายของลิสต์ออก delete() – ลบ(ดึง) โหนดที่มีข้อมูลตรงกับที่กำหนดออก isEmpty() – ตรวจสอบว่าลิสต์ว่างหรือไม่ countNode() – นับจำนวนโหนดทั้งหมดในลิสต์ findTarget() – ตรวจสอบว่ามีโหนดที่มีข้อมูลตรงกับที่กำหนดหรือไม่

int isEmpty ( node **ptr_head) ; parameter ชื่อของตัวแปรลิสต์ที่จะตรวจสอบว่าว่างหรือไม่ return value มีได้ 2 สถานะ คือ ว่าง (1) หรือ ไม่ว่าง (0) body of function ตรวจสอบว่าลิสต์ว่างหรือไม่ (*ptr_head == NULL) ถ้าใช่ return 1 , ถ้าไม่ใช่ return 0

int countNode ( node ** ptr_head ) ; parameter ชื่อของตัวแปรลิสต์ที่จะนับจำนวนโหนด return value จำนวนโหนดในลิงค์ลิสต์ body of function นับจำนวนโหนดในลิงค์ลิสต์ ต้องอาศัยการ “ท่อง” ไปในลิงค์ลิสต์ทีละโหนดและนับจำนวน

การท่องไปในลิงค์ลิสต์ (traverse) ลักษณะของการท่องไปในลิงค์ลิสต์ ต้องอาศัยการสร้างตัวแปร pointer ขึ้นมา 1 ตัว เพื่อ “เดิน” ไปตามเส้นทางของลิงค์ลิสต์นั้น data head p p = *ptr_head; while( p->next != NULL) { p = p->next; }

int findTarget (node **ptr_head, int target); parameter ชื่อของตัวแปรลิสต์ที่จะค้นหาข้อมูล ข้อมูลที่ต้องการค้นหา return value มีได้ 2 สถานะ คือ พบ (1) หรือ ไม่พบ (0) body of function ค้นหาข้อมูลที่ต้องการไปทีละโหนดในลิงค์ลิสต์ ต้องอาศัยการ “ท่อง” ไปในลิงค์ลิสต์ ถ้าพบ return 1 , ถ้าไม่พบ return 0

void insertFirst ( node **ptr_head, int input ) ; void insertLast ( node **ptr_head, int input ) ; void insert ( node **ptr_head, int target, int input ) ; int deleteFirst ( node **ptr_head ) ; int deleteLast ( node **ptr_head ) ; int delete ( node **ptr_head, int target ) ; int countNode ( node **ptr_head ) ; int isEmpty ( node **ptr_head) ; int findTarget ( node **ptr_head, int target ) ;