คิวQueue Circular Queue.

Slides:



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

Pointers. Why have pointers? / pointers ทำให้ฟังก์ชันหรือส่วนของ โปรแกรมสามารถใช้งานข้อมูลร่วมกันได้ / ใช้ pointers ในการสร้างโครงสร้างข้อมูลที่ ซับซ้อนได้
จงเขียนโปรแกรมในการคำนวณหาค่า function ข้างล่างโดยอาศัยหลักการ
โครงสร้างข้อมูลสแตก มีลักษณะเป็นรายการในแนวเชิงเส้น(Linear List)รูปแบบหนึ่ง และมีข้อกำหนดให้ชุดปฏิบัติการสามารถเพิ่มและลบรายการเพียงด้านเดียว ซึ่งเป็นด้านบนสุดของสแตก(Top.
Introduction to C Introduction to C.
CSI1201 การเขียนโปรแกรมเชิงโครงสร้าง Structured Programming
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
ระบบมัลติโปรแกรมมิ่ง (Multiprogramming System)
โครงสร้างข้อมูลสแตก มีลักษณะเป็นรายการในแนวเชิงเส้น(Linear List)รูปแบบหนึ่ง และมีข้อกำหนดให้ชุดปฏิบัติการสามารถเพิ่มและลบรายการเพียงด้านเดียว ซึ่งเป็นด้านบนสุดของสแตก(Top.
บทที่ 5 โครงสร้างข้อมูลคิว
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
Functional programming part II
Data Type part.III.
Stack.
Lecture 10: อาร์เรย์หนึ่งมิติ
Stack Holidays/seasonal content.
เรื่อง องค์ประกอบของคอมพิวเตอร์ จำทำโดย นาย เดชฤทธิ์ ร้อยพรหมมา
บทนำ.
Data structure & Algorithms
ลักษณะการทำงานของ Stack
ซอฟต์แวร์.
บรรยายครั้งที่ 3: Queue
Linked-List (รายการโยง)
โปรแกรมย่อย : Pascal Procedure
SMTP.
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
โดย อ.ปริญญา น้อยดอนไพร V
เทคโนโลยีสารสนเทศ เทคโนโลยี + สารสนเทศ.
ความหมาย ปัญญาประดิษฐ์
CPU ไม่รวม I/O PROCESSOR , MATH CO-PROCESSOR
โครงสร้างการจัดเก็บข้อมูลเชิงกายภาพ
โครงสร้างข้อมูลแบบคิว
คิว ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue
สแตค(stack) โครงสร้างข้อมูลแบบ Stack - การสร้าง Stack
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ค31212 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 2
คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะทำที่ปลายใดปลายหนึ่งของ Queue ในขณะที่การลบข้อมูลออกจากคิว.
Linked List (ลิงค์ลิสต์)
กิจกรรมที่ 1 ซอฟต์แวร์ระบบ จุดประสงค์ 1. บอกความหมายของซอฟต์แวร์
เรื่องการออกแบบฐานข้อมูล
Geographic Information System
บทที่ 5 Link List Link List.
การเขียนโปรแกรมประยุกต์ใช้งาน
การเขียนโปรแกรม PHP เชื่อมต่อกับ MySQL
ลิงค์ลิสต์ (Linked List)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
A Comparison on Quick and Bubble sort on large scale data
การนำระบบเทคโนโลยีสารสนเทศมาสนับสนุนการทำงาน
กองซ้อน ยอดกองซ้อน (stack).
โครงสร้างข้อมูลแบบกองซ้อน (Stack)
โครงสร้างข้อมูลแบบรายการโยง (Link List)
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
พนธกร หาดี (ptk.toomyai.ac.th) 1 ง หน่วยการเรียนรู้ที่ 5.
โครงสร้างข้อมูล Queues
โครงสร้างข้อมูลแบบลิงก์ลิสต์
หลักการเขียนโปรแกรม ( )
โรงเรียนวังไกลกังวล หัวหิน
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
1. บทนำเกี่ยวกับอินเทอร์เน็ต อินเทอร์เน็ตมีจุดเริ่มต้นมาจากเหตุผล ทางการทหาร เนื่องจากในยุค สงครามเย็น เมื่อประมาณ พ. ศ 2510 ระหว่างฝ่ายคอมมิวนิสต์ และฝ่ายเสรี
โครงสร้างข้อมูลแบบ สแตก (stack)
QueueQueue 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
Queue [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
Queue [2] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
3 โครงสร้างข้อมูลแบบคิว (QUEUE).
ใบสำเนางานนำเสนอ:

คิวQueue Circular Queue

นิยามของคิว นิยามของคิว คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ "เข้าก่อนออกก่อน" (First In First Out: FIFO)

การกระทำ(Operation) โครงสร้างข้อมูลแบบ Queue การสร้างคิว(Create) การนำสมาชิกข้อมูลเข้าคิว(Enqueue) การนำสมาชิกข้อมูลออกจากคิว(Dequeue) การทดสอบว่าคิวว่างหรือไม่(Empty) การทดสอบว่าคิวเต็มหรือไม่(Full) การทำให้คิวเป็นคิวว่าง(Clear)

ลักษณะของโครงสร้างข้อมูลแบบแถวคอย คล้ายกับโครงสร้างข้อมูลแบบ Stack แต่จะต่างตรงที่ข้อมูลที่เข้าและออกจะกระทำที่ปลายคนละด้านกัน ข้อมูลที่เข้ามาใหม่จะเพิ่มเข้ามาด้านหลัง (Rear) ข้อมูลที่จะนำออกก่อนจะอยู่ด้านหน้า (Front) ลักษณะนี้เรียกว่า เข้ามาก่อน ออกไปก่อน (FIFO หรือ FCFS)

ตัวอย่าง Rear Front

5.1.1 การนำข้อมูลเข้า การนำข้อมูลใหม่เข้ามาแถวคอย จะเพิ่มเข้ามาด้านหลัง และจะนำเข้ามาเรื่อย ๆ จนเต็ม หรือเรียกว่า แถวคอยเต็ม (Queue Overflow)

5.1.2 การนำข้อมูลออก ข้อมูลที่จะนำออกก่อนจะเป็นข้อมูลที่อยู่ด้านหน้า สามารถนำข้อมูลออกเรื่อย ๆ จนไม่มีข้อมูล หรือเรียกว่า แถวคอยว่าง (Queue Underflow)

การสร้างคิวด้วย Array หมายถึง การแทนที่ข้อมูลของคิวด้วย array ซึ่ง เป็นการจัดสรรเนื้อที่หน่วยความจำแบบ static นั่นคือ มีการกำหนดขนาดของคิวล่วงหน้าว่ามีขนาดเท่าใด และจะมีการจัดสรรเนื้อที่หน่วยความจำให้เลย

การแทนโครงสร้างข้อมูลQueue ด้วย Array จะมีการกระทำทั้งหมด 4 ขั้นตอนคือ การสร้าง การนำข้อมูลเข้า การนำข้อมูลออก การแสดงข้อมูล

การสร้าง เป็นขั้นตอนแรกของโครงสร้างข้อมูลแบบแถวคอย คือก่อนที่จะเก็บข้อมูลต่าง ๆ จะต้องทำการสร้างที่เก็บข้อมูลก่อน มีการกำหนดตัวชี้ 2 ตัวคือ F และ R ตัวอย่างภาษาซี เช่น int Queue[4]; int F,R;

การนำข้อมูลเข้า Queue Overflow 1 2 3 4 10 20 30 40 F=R=0 F R R R R

การนำข้อมูลออก Temp = 1 2 3 4 F=R=0 F F F F R Queue Underflow 30 10 20 40 1 2 3 4 F=R=0 F F F F R Queue Underflow

การแสดงข้อมูล 1 2 3 4 20 30 40 20 30 40 F I I I R

การสร้างคิวด้วย Link List หมายถึง การแทนที่ข้อมูลของคิวด้วย Link list ซึ่งเป็นการจัดสรรเนื้อที่หน่วยความจำแบบ Dynamic นั่นคือ หน่วยความจำจะถูกจัดสรรเมื่อมีการของใช้จริงๆ ระหว่างการประมวลผลโปรแกรมผ่านตัวแปรชนิด Pointer

การแทนที่โครงสร้างข้อมูลแบบแถวคอยด้วยรายการโยง Link List มีทั้งหมด 4 ขั้นตอนดังนี้ การสร้าง การนำข้อมูลเข้า การนำข้อมูลออก การแสดงข้อมูล

การสร้าง { int data; struct node *next; } node; node *F, *R; typedef struct node { int data; struct node *next; } node; node *F, *R;

การนำข้อมูลเข้า P R P P R F 120 ^ 80 ^ 90 ^ R

การนำข้อมูลออก F F F R 120 80 90 ^ Queue Underflow

แสดงข้อมูล Temp Temp Temp R F 120 120 80 80 90 90 ^

คิววงกลม (Circular Queue) หลักการของคิววงกลมคือการนำหัวคิวและหางคิวมาเชื่อมต่อกันเป็นวง ทำให้สามารถเพิ่มข้อมูลต่อกันไปเรื่อย ๆ ได้ โดยไม่จำกัดอยู่ที่ขนาดของอะเรย์ (Array Size) โดยอาจจินตนาการถึงคิววงกลมได้ดังภาพ

โครงสร้างแถวคอยแบบวงกลม 1 2 3 4 40 50 60 80 F R R F R

คิววงกลม (Circular Queue)

คิวที่มีอภิสิทธิ์ (Priority Queue) คิวที่มีอภิสิทธิ์เป็นคิวที่ประยุกต์ใช้ในระบบปฏิบัติการ โดยหลักในการนำข้อมูลออกเหมือนคิวทั่วไป แต่การนำข้อมูลเข้าจะพิจารณาจากค่าอภิสิทธิ์หรือค่าของข้อมูลเอง ขึ้นอยู่กับการประยุกต์ใช้

คิวที่มีอภิสิทธิ์ (Priority Queue)

การประยุกต์ใช้คิว การทำงานของระบบคอมพิวเตอร์ในโลกยุคปัจจุบันจะเป็นการทำงานในลักษณะเครือข่าย และมีการใช้ทรัพยากรร่วมกัน การที่ระบบปฏิบัติการจะจัดสรรทรัพยากรเพื่อให้บริการแก่ผู้ใช้ หรืองานต่าง ๆ อย่างมีประสิทธิภาพ สมดุล และยุติธรรม ชนิดข้อมูลแบบคิวมีความสำคัญมากในการดำเนินงานของระบบปฏิบัติการ ตัวอย่างเช่น ในการใช้ทรัพยากร CPU จากเครื่อง Server หรือการใช้ทรัพยากร System Printer สำหรับผู้ใช้หลายคน ระบบปฏิบัติการจะใช้ชนิดข้อมูลแบบคิวในการจัดระเบียบผู้ใช้ (http://sot.swu.ac.th/cp341/lesson06/ms2t1.htm)

การประยุกต์ใช้คิว