งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

1 โครงสร้างข้อมูล แบบคิว QUEUE. 2 เนื้อหา คิว โอเปอร์เรชั่นของคิว การเพิ่มข้อมูลเข้าไปในคิว (En Queue) การลบข้อมูลออกจากคิว (De Queue) คิวแบบวงกลม การประยุกต์ใช้งานคิว.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "1 โครงสร้างข้อมูล แบบคิว QUEUE. 2 เนื้อหา คิว โอเปอร์เรชั่นของคิว การเพิ่มข้อมูลเข้าไปในคิว (En Queue) การลบข้อมูลออกจากคิว (De Queue) คิวแบบวงกลม การประยุกต์ใช้งานคิว."— ใบสำเนางานนำเสนอ:

1 1 โครงสร้างข้อมูล แบบคิว QUEUE

2 2 เนื้อหา คิว โอเปอร์เรชั่นของคิว การเพิ่มข้อมูลเข้าไปในคิว (En Queue) การลบข้อมูลออกจากคิว (De Queue) คิวแบบวงกลม การประยุกต์ใช้งานคิว QueueSlide# 2

3 3 คิว : Queue คิวเป็นลิสต์แบบเชิงเส้น เช่นเดียวกับสแตค แต่มีความ แตกต่างกันตรงที่คิวมีตัวชี้ 2 ตัว คือ front และ rear สำหรับการใส่ ข้อมูลเข้าและนำข้อมูลออก คิวมี กระบวนการทำงานแบบ First In First Out : FIFO QueueSlide# 3

4 4 ตัวอย่างของคิว QueueSlide# 4 ABC … n frontrear BC … n front +1 rear ลบข้อมูล A

5 5 Chapter 4 Stack and Queue โครงสร้างข้อมูลแบบเชิงเส้นเช่นเดียวกับสแตก และคิว มีตัวชี้ 2 ตัว - หัว (Head) - หาง (Tail) ข้อมูลจะเข้าทางหางและออกทางหัวที่เรียกว่า FIFO กขค HT

6 6 Chapter 4 Stack and Queue Queue ขค H+1T ขคง T+1 A HT H and T = NULL

7 7 Chapter 4 Stack and Queue Queue ( circular queue) กข H=1 T=2 ขงค H=2 T=4 งค H=3 T=4 จงค H=3 T=1 จง H=4 T=1 จฉ H=1 T=2 Circular queue มีหลักอยู่ว่าต้องทราบจำนวนสูงสุดของ หน่วยความจำที่ใช้เก็บข้อมูล

8 QueueSlide# 8 a) empty queue front = -1 rear = -1 สถานะของคิว A b) enqueue A front = 0 rear = 0 AB c) enqueue B front = 0 rear = 1 B d) dequeue A front = 1 rear = 1 BC e) enqueue C front = 1 rear = 2 full queue C f) dequeue B front = 2 rear = 2

9 9 Chapter 4 Stack and Queue อัลกอริธึม อัลกอริธึม INSQ (Q,N,H,T,DATA) : Q = คิวของข้อมูล 1. ถ้า H = 1 และ T = N หรือถ้า H = T+1 แสดงว่าคิวเต็มและจบการทำงาน 1.1 ถ้า H = NULL ดังนั้นให้ H = 1 and T = ถ้า T = N ให้ T = 1 และ 1.3 ถ้า T = ตำแหน่งใดๆให้ T = T+1 2. ให้ Q [T] = DATA 3. จบการดำเนินการ

10 10 Chapter 4 Stack and Queue อัลกอริธึม อัลกอริธึม DELQ (Q,N,H,T,DATA) 1. ถ้า H = NULL ดังนั้นคิว Underflow และจบการทำงาน 2. ให้ DATA = Q [H] 2.1 ถ้า H = T ให้ H = T= NULL 2.2 ถ้า H = N ให้ H = ถ้า H = ตำแหน่งใดๆในคิว ให้ H = H+1 3. จบการดำเนินการ

11 11 การเพิ่มข้อมูลเข้าไปในคิว : En Queue การนำข้อมูลเข้าที่ rear ซึ่งจะชี้ สมาชิกตัวสุดท้าย และต้องเพิ่มค่า rear ทีละ 1 ก่อนจะนำสมาชิกใหม่ เข้ามา และทำลักษณะเช่นนี้จนกว่า คิวจะเต็ม ที่ rear=n-1 เป็นค่าสูงสุด QueueSlide# 11

12 12 De Queue ในการจัดรูปแบบของคิวอีกรูปแบบเรียกว่า ดีคิว หรือ เดค ซึ่งแบ่งออกเป็น 2 ชนิด 1.ดีคิวที่จำกัดการนำเข้าของข้อมูล(In-put restricted de queue) ดีคิวที่ใส่ข้อมูลได้เพียงด้านเดียว แต่ลบข้อมูลออกได้ทั้ง สองด้าน 2.ดีคิวที่จำกัดการส่งออกของข้อมูล(Out-put restricted de queue) ดีคิวที่ใส่ข้อมูลได้ทั้งสองด้าน แต่ลบข้อมูลออกได้เพียง ด้านเดียว

13 13 En Queue ในการจัดลำดับและการลบออกของคิวที่มีขบวนการดัง ต่อไปนี้ 1.ข้อมูลที่มีลำดับความสำคัญสูงสุดจะถูกเรียกทำงานก่อน 2.ในกรณีที่มีลำดับความสำคัญเท่ากันเลือกอันที่มาก่อน ในการสร้างคิวแบ่งได้เป็น 2 ลักษณะ 1.คิวแบบแถวเดียว (One Way List) ประกอบด้วย 3 ส่วน (ข้อมูล, ลำดับความสำคัญ และตัวชี้ถัดไป) ก 1 ก 1 ก 1 ก 1 HT

14 14 Chapter 4 Stack and Queue ในการสร้างคิวแบ่งได้เป็น 2 ลักษณะ 2.คิวแบบหลายคิวตามจำนวนลำดับความสำคัญและกำหนด เป็นลักษณะหลายแถวเรียกว่า circular Queue มีลักษณะ 2 มิติ ไม่เป็นข้อมูลแบบเชิงเส้น 3 จ 4 ฉ 1 ก 12 2 ขคง 34 ลำดับความสำคัญ ตำแหน่ง

15 15 Enqueue addq ( int item ) { if ( rear == MAX - 1 ) { printf ( "\nQueue is full" ) ; return ; } rear++ ; arr[rear] = item ; if ( front == -1 ) front = 0 ; } QueueSlide# 15 กรณี e) และ f) คิวเต็ม

16 16 การลบข้อมูลจากคิว : De Queue การนำข้อมูลออกจากคิว จะออกที่ front ซึ่งจะชี้ที่สมาชิกตัวแรกเสมอ ค่า front จะเพิ่มขึ้นทีละ 1 ทุกครั้ง หลังจากนำ ข้อมูลออกจากคิวแล้ว ทำจนกระทั่ง front = rear โดย กำหนดให้ค่าของ front=-1 และ rear=-1 ซึ่งแสดงว่าคิวว่าง QueueSlide# 16

17 17 Dequeue delq( ) {int data ; if ( front == -1 ) { printf ( "\nQueue is Empty" ) ; return NULL ; } data = arr[front] ; if ( front == rear ) front = rear = -1 ; else front++ ; return data ; } QueueSlide# 17 กรณีลบคิวที่เหลือเพียงตัวเดียว

18 18 คิววงกลม : Circular Queue คือคิวที่เปรียบเสมือนกับ ลิเนียร์ อาเรย์ทั่ว ๆ ไป แตกต่างเพียงแต่ว่า คิววงกลมสามารถกลับไปใช้คิวหน้า ได้ในกรณีที่หมดคิวปกติแล้ว QueueSlide# 18

19 19 QueueSlide# 19 คิวแบบวงกลม C f) full queue front = 2 rear = 2 DC g) enqueue D front = 1 rear = 0 กรณีคิวเต็ม กำหนดให้ rear ไปชี้ที่จุดเริ่มต้นใหม่ (0) เพื่อ สามารถเพิ่ม D เข้าไปได้

20 20 Enqueue of Circular Queue addq ( int item ) { if ( ( rear == MAX - 1 && front == 0 ) || ( rear + 1 == front ) ) { printf ( "\nQueue is full" ) ; return ; } if ( rear == MAX - 1 ) rear = 0 ; else rear++ ; arr[rear] = item ; if ( front == -1 ) front = 0 ; } QueueSlide# 20 กรณี g) คิวเต็ม เมื่อต้องการเพิ่ม ข้อมูลเข้าไปอีก ให้กำหนด rear ไป ชี้ที่จุดเริ่มต้นใหม่ แสดงข้อความว่า “คิวเต็ม” เช่น กรณี h)

21 21 QueueSlide# 21 เพิ่มข้อมูลในคิวแบบวงกลม DEC h) enqueue E front = 2 rear = 1 DC g) enqueue D front = 1 rear = 0

22 22 Dequeue of Circular Queue delq( ) { int data ; if ( front == -1 ) { printf ( "\nQueue is Empty" ) ; return NULL ; } else { data = arr[front] ; if ( front == rear ) front = rear = -1 ; else { if ( front == MAX - 1 ) front = 0 ; else front++ ; } return data ; } QueueSlide# 22 กรณี i) ลบคิวที่ช่องความจำสุดท้าย กำหนดให้ front วนไปชี้ที่จุดเริ่มต้น ใหม่ กรณี k) ลบคิวที่เหลือเพียงตัวเดียว

23 23 QueueSlide# 23 ลบข้อมูลในคิวแบบวงกลม DEC h) enqueue E front = 2 rear = 1 DE i) dequeue C front = 0 rear = 1 E j) dequeue D front = 1 rear = 1 k) dequeue E front = -1 rear = -1

24 24 Chapter 4 Stack and Queue สรุป ในบทแสดงโครงสร้างข้อมูล 2 ชนิด สแตก และ คิว ความแตกต่างของโครงสร้างใน การจัดเก็บ และขบวนการลบ การแทรกข้อมูล การประยุกต์ใช้ในเรื่องการจัดลำดับการทำงานสมการ ทางคณิตศาสตร์ ในเรื่องการแก้สมการ อินฟิก ด้วย พรีฟิก และโพสฟิก

25 25 Home work 1. จงอธิบายถึงสิ่งที่เหมือนกันและสิ่งที่แตกต่างกัน ระหว่างสแตกกับคิว 2. “ ท็อปของสแตก ” คืออะไร จงอธิบาย 3. จงอธิบายถึงสิ่งที่เหมือนกันและสิ่งที่แตกต่างกันระหว่าง คิวเส้นตรงกับคิววงกลม 4. จงเปรียบเทียบข้อดี ข้อเสียของโครงสร้างข้อมูลสแตก คิววงกลม และคิวเส้นตรง 5. คิวขนาด 7 ค่า มีรายการต่อไปนี้ Front = 2, Rear = 6, Queue [ ] = {null, null, “ ขนุน ”, “ ส้มโอ ”, “ แตงโม ”, “ ฝรั่ง ”, null } จงอธิบายผลของคิวแบบวงกลม โดยมีค่าเริ่มต้น ตำแหน่งที่ 0 รวมทั้ง Front และ Rear เมื่อมีการกระทำ ต่อไปนี้

26 26 ก. เพิ่มมะม่วง ข. ลบ 2 รายการออกจากคิว ค. เพิ่ม “ ทุเรียน ” ลงในคิว ง. เพิ่ม “ องุ่น ” ลงในคิว จ. ลบ 2 รายการออกจากคิว ฉ. เพิ่ม “ ละมุด ” ลงในคิว Home work

27 27 Home work 6. จงเขียนแผนภาพและค่าของตัวแปรของคิว ที่มีสมาชิกเป็นเลขจำนวนเต็มและสร้างด้วย ลิงค์ลิสต์ เมื่อมีการดำเนินการดังนี้ ก. สร้างคิวว่าง ข. เพิ่ม 5 และ 8 ลงในคิว ค. นำข้อมูลออกจากคิว 1 ค่า ง. เพิ่มข้อมูลในคิวอีก 5 ค่า จ. นับจำนวนสมาชิกในคิว


ดาวน์โหลด ppt 1 โครงสร้างข้อมูล แบบคิว QUEUE. 2 เนื้อหา คิว โอเปอร์เรชั่นของคิว การเพิ่มข้อมูลเข้าไปในคิว (En Queue) การลบข้อมูลออกจากคิว (De Queue) คิวแบบวงกลม การประยุกต์ใช้งานคิว.

งานนำเสนอที่คล้ายกัน


Ads by Google