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

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

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

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


งานนำเสนอเรื่อง: "โครงสร้างข้อมูลแบบคิว"— ใบสำเนางานนำเสนอ:

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

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

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

4 ตัวอย่างของคิว front rear front +1 rear A B C … n ลบข้อมูล A B C … n
Queue Slide# 4

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

6 Chapter 4 Stack and Queue
H+1 T H+1 T+1 A H T H and T = NULL

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

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

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

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

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

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

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

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

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

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

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 ;  } กรณีลบคิวที่เหลือเพียงตัวเดียว Queue Slide# 17

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

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

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 ;  แสดงข้อความว่า “คิวเต็ม” เช่น กรณี h) กรณี g) คิวเต็ม เมื่อต้องการเพิ่มข้อมูลเข้าไปอีก ให้กำหนด rear ไปชี้ที่จุดเริ่มต้นใหม่ Queue Slide# 20

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

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 ;  {  if ( front == MAX - 1 )  front = 0 ;  front++ ;    return data ;  } กรณี k) ลบคิวที่เหลือเพียงตัวเดียว กรณี i) ลบคิวที่ช่องความจำสุดท้าย กำหนดให้ front วนไปชี้ที่จุดเริ่มต้นใหม่ Queue Slide# 22

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

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

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

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

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


ดาวน์โหลด ppt โครงสร้างข้อมูลแบบคิว

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


Ads by Google