โครงสร้างข้อมูลและอัลกอริธึม

Download Report

Transcript โครงสร้างข้อมูลและอัลกอริธึม

โครงสร้างข้อมูล Queues
1
Using a Queue
2
Queues

คิวเป็ นโครงสร้ างข้ อมูลเชิงเส้ นทีส่ ามารถเพิม่
ข้ อมูลเฉพาะตาแหน่ งส่ วนท้ ายคิวทีเ่ รียกว่ า Rear และลบข้ อมูล
เฉพาะตาแหน่ งส่ วนหัวคิวที่เรียกว่ า Front

คิวเป็ นโครงสร้ างข้ อมูลแบบเข้ าก่อนออกก่อน
(First In First Out : FIFO)
3
ตัวอย่ างของคิว
4
ตัวอย่ างการประยุกต์ ควิ มาใช้ งานบนคอมพิวเตอร์
การเข้าคิวของโปรเซสหรื องานต่างๆ เพื่อรอการประมวลผลจากซีพียู
ตามลาดับ
 การเข้าคิวเพื่อรอพิมพ์ผลลัพธ์จากเครื่ องพิมพ์

5
การดาเนินงานของคิว Queue Operation

โครงสร้างข้อมูลแบบคิวจะมีส่วนคล้ายกับโครงสร้างข้อมูลแบบ
สแต็ก แต่ความแตกต่างระหว่างโครงสร้างทั้งสองก็คือ ในการสร้าง
คิวเพื่อใช้งานจาเป็ นต้องมีส่วนที่ใช้ติดตามทั้งส่ วนหัวคิวและท้ายคิว
นัน่ หมายความว่าจะมีพอยน์เตอร์ถึงสองตัวโดยพอยน์เตอร์แต่ละตัว
จะชี้ตรงตาแหน่งปลายทั้งสองด้านซึ่งก็คือส่ วน Front และ Rear แต่
สแต็กจะมีเพียงพอยน์ เตอร์ เดียวที่ใช้ จัดการกับข้ อมูลตตรงส่ วน
Top ของสแต็ก
6
ฟั งก์ ชันการดาเนินงานพืน้ ฐานของคิว
1. Enqueue (ใส่ หรือเพิ่ม ในตาแหน่ งของ Rear)
2. Dequeue(การลตบ ที่ตาแหน่ ง Font)
3. Queue Front (การขอดูข้อมูลตในคิว)
4. Queue Rear(การขอดูข้อมูลตในคิว)
7
Queue Operation
Enqueue – การใส่ ขอ้ มูลลงในแถวคอย
่ ้อมูลด ้านท ้ายแถวเสมอ
 ต ้องใสข
 ต ้องตรวจสอบว่า queue เต็มหรือไม่
DATA 3
DATA 2
DATA 1
8
Queue Operation
Dequeue – นาข้อมูลออกจาก queue
 ต ้องนาข ้อมูลหัวแถวออกก่อนเสมอ
 ต ้องตรวจสอบว่า queue ว่างหรือไม่
DATA 3
DATA 2
DATA 1
9
Queue Operation
Front – แสดงข้อมูลที่อยูห่ วั แถว
 แสดงค่าข ้อมูลทีอ
่ ยูห
่ วั แถวโดยไม่ได ้ดึงข ้อมูลออก
 ต ้องตรวจสอบว่าเป็ น queue ว่างหรือไม่
DATA 3
DATA 1
DATA 2
DATA 1
10
Queue Operation
Rear – แสดงข้อมูลที่อยูท่ า้ ยแถว
 แสดงค่าข ้อมูลท ้ายแถวโดยไม่ได ้ดึงข ้อมูลออก
 ต ้องตรวจสอบว่าเป็ น queue ว่างหรือไม่
DATA 3
DATA 2
DATA3
DATA 1
11
Enqueue

การใส่ หรือเพิ่มข้ อมูลตลตงในคิวที่ตาแหน่ ง Rear การเพิ่มข้ อมูลต
เข้ าไปในคิวจะต้ องมีพนื ้ ที่ว่างพอที่จะใส่ สมาชิกใหม่ เข้ าไปถ้ า
พืน้ ที่ไม่ เพียงพอก็จะทาให้ เกิดสถานะ Overflow
12
Dequeue

การนาข้ อมูลตที่ตาแหน่ ง Front ออกจากคิวหรื อการลตบข้ อมูลตที่ตาแหน่ ง
Front ถ้ าการลตบข้ อมูลตในคิวถ้ าคิวไม่ มีสมาชิกอยู่จะทาให้ เกิดสถานะ
Underflow
13
Queue Front

การขอดูข้อมูลในคิวที่ตาแหน่ง Front
14
Queue Rear

การขอดูข้อมูลตในคิวที่ตาแหน่ ง Rear
15
Queue Implementation
คิวเป็ นโครงสร้ างข้ อมูลทีผ่ ู้ใช้ จะต้ องสร้ างขึน้ มาเอง โดยสามารถสร้ าง
จากโครงสร้ างข้ อมูลดังต่ อไปนี้
1. ลิงค์ ลสิ ต์
2. อาร์ เรย์
16
การออกแบบคิวด้ วยลติงค์ ลติสต์ Queue Linked List Design
17
ส่ วนประกอบคิวด้ วยลติงค์ ลติสต์
18
ตัวอย่ างการใช้ งาน
19
20
อัลกอริทมึ ของคิว Queue Algorithms








Create Queue การสร้ างคิว
Enqueue การเพิ่มข้ อมูล
Dequeue ลบข้ อมูล
Retrieving Queue Data การดึงข้ อมูล
 Queue Front
 Queue Rear
Empty Queue ตรวจสอบคิวว่าง
Full Queue ตรวจสอบคิวเต็ม
Queue Count นับจานวนสมาชิก
Destroy Queue ลบคิว
21
ตัวอย่ างการ Enqueue
กรณีที่ 1 เพิม่ ข้ อมูลในคิว ทีย่ งั ไม่ มขี ้ อมูลเลย
กรณีที่ 2 เพิม่ ข้ อมูลในคิวทีม่ ขี ้ อมูลอยู่แล้ ว
22
ตัวอย่ างการ Dequeue
23
การออกแบบคิวด้ วยอาร์ เรย์ Queue Array Design
24
ปั ญหาที่อาจเกิดขึน้ ขณะใช้ งาน

เมื่อมีการ Dequeue แลตะ Enqueue อาจจะทาให้ พนื ้ ที่ด้านหลตังของ
อาร์ เรย์ เต็ม แต่ ช่องว่ างด้ านหน้ าของอาร์ เรย์ ยังว่ างอยู่
25
วิธีการแก้ ไข
Front
rear
F
G
H
I
J
K
L
M
N
O
P
Q
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11] [12]
[13]
[14]
[15]
[16]
26
การใช้ เทคนิคคิวแบบวงกลตม Circular Queue
27
28
แบบฝึ กหัด
อธิบายพร้ อมวาดภาพประกอบคิวเป็ นโครงสร้ างข้ อมูลตรูปแบบ
ใด แลตะมีความแตกต่ างกับสแต็กอย่ างไร
 อธิบายโครงสร้ างข้ อมูลตแบบคิวที่สร้ างด้ วยลติงก์ ลติสต์
ประกอบด้ วยสองส่ วนสาคัญอยู่ 2 ส่ วนด้ วยกันคืออะไรบ้ าง
 ยกตัวอย่ างการประยุกต์ ใช้ คิวในงานบนคอมพิวเตอร์
 อธิบายฟั งก์ ชันการดาเนินงานพืน้ ฐานของคิวมีก่ ีอย่ างอะไรบ้ าง

29
Stack
 enQ
 deQ

30
Achaporn

Input
Achaporn
output
nropahca
โดยให้ นศ. นาหลักการทางานของ Stack และ Q มาใช้ในการ
แก้ปัญหา

31