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

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

3 โครงสร้างข้อมูลแบบคิว (QUEUE).

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


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

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

2 เป็นโครงสร้างการทำงานแบบแถวลำดับ เป็นโครงสร้างที่มีคุณสมบัติ คือ
ความหมายของ Queue? เป็นโครงสร้างการทำงานแบบแถวลำดับ เป็นโครงสร้างที่มีคุณสมบัติ คือ การนำข้อมูลเข้าสู่ QUEUE จะทำที่ปลายด้านหนึ่ง เรียกว่า REAR (หางคิว) การนำข้อมูลออกจาก QUEUEจะทำได้ที่ปลายด้านหนึ่ง เรียกว่า FRONT (หัวคิว) จากคุณสมบัตินี้ทำให้ถูกเรียกว่า FIFO (First in , First Out) คือ ข้อมูลที่เข้าก่อนก็จะออกก่อน

3 การดำเนินงานของ Queue
EnQ (N-Q) หรือ Add หรือ INSERT คือการนำสมาชิกใหม่เข้าไปเก็บสู่ Queue โดยจะเป็นการนำไปเก็บต่อท้ายสมาชิกเดิมที่มีอยู่ใน Queue (ที่ REAR) DeQ (D-Q) หรือ Delete หรือ Remove คือการนำสมาชิกที่อยู่ใน Queue ออกจาก Queue โดยจะเป็นการนำข้อมูลออกที่หน้า Queue (ที่ Front)

4 QUEUE ALOGORITHM REAR En-Q A B C D De-Q A B C D FRONT FRONT

5 การดำเนินงานของ Queue
ถ้าไม่มีจะไม่สามารถนำข้อมูลออกได้ เรียกว่า “Empty Queue” หรือ FRONT = REAR = 0 การตรวจสอบดูว่า Queue เต็มหรือไม่ ? ถ้าไม่มีจะไม่สามารถนำข้อมูลเข้าได้ เรียกว่า “Full Queue” REAR = Max Queue

6 แนวทางในการออกแบบ Queue
ใช้ Rear Pointer เพียงตัวเดียวแล้วกำหนดให้ Index แรกของ Array (ที่ใช้ในการสร้างเป็นตัว Queue) เป็น Front Pointer ใช้ Front Pointer และ Rear Pointer เป็นตัวในการจัดการ Queue ใช้ Front Pointer และ Rear Pointer เป็นตัวในการจัดการ Queue แต่ทำการจัดการเป็นแบบ Circular Queue

7 แนวทางในการออกแบบ Queue: แบบที่ 1
ใช้ Rear Pointer เพียงตัวเดียวแล้วกำหนดให้ Index แรกของ Array (ที่ใช้ในการสร้างเป็นตัว Queue) เป็น Front Pointer REAR ใช้ Rear Pointer เป็นตัวระบุในการบอกว่าหางคิวอยู่ที่ใด เมื่อมีการเอาข้อมูลออกจาก Queue จะไม่มีการขยับ Front Pointer มาชี้ตัวรองลงมาแต่จะทำการขยับข้อมูลทั้งหมดไปที่ Index = 0 แทน

8 แนวทางในการออกแบบ Queue: แบบที่ 1
เมื่อมีการนำสมาชิกใน Queue ออกจาก Queue จำเป็นต้องทำการขยับสมาชิกทุกตัวที่เหลือ ไปทางซ้ายมือ ( Index = 0 ) ทำให้เสียเวลาการทำงานของโปรแกรม ทำให้ประสิทธิภาพการทำงานของโปรแกรมลดลง

9 แนวทางในการออกแบบ Queue: แบบที่ 2
ใช้ Front Pointer และ Rear Pointer เป็นตัวในการจัดการ Queue ใช้ Front Pointer เป็นตัวระบุในการบอกว่าหัวคิวอยู่ที่ใด ใช้ Rear Pointer เป็นตัวระบุในการบอกว่าหางคิวอยู่ที่ใด เมื่อมีการเอาข้อมูลออกจาก Queue จะทำการขยับ Front Pointer มาชี้ที่ข้อมูลที่มาเป็นหัวคิวแทน เมื่อมีการเอาข้อมูลเข้า Queue จะทำการขยับ Rear Pointer มาชี้ที่ข้อมูลที่มาเป็นหางคิวแทน REAR FRONT

10 แนวทางในการออกแบบ Queue: แบบที่ 2
ในบางกรณีเกิดช่องว่างของพื้นทีภายใน Queue ทั้งที่ความเป็นจริงแล้วพิ้นที่ภายใน Queue ยังว่างอยู่

11 ประกอบไปด้วย มีเพื่อระบุว่าหัวคิว (Front) และ หางคิว (Rear) อยู่ที่ใด
การสร้าง Queue ด้วยโครงสร้างข้อมูล Array (Implementation of Queue as Array) ประกอบไปด้วย ตัว Queue ( อาจจะเป็น ARRAY ได้ หรือ Link List) ตัวระบุค่าของ Queue มีเพื่อระบุว่าหัวคิว (Front) และ หางคิว (Rear) อยู่ที่ใด โปรแกรมย่อย 2 โปรแกรมคือ EnQ() และ DeQ() โปรแกรมย่อย 2 โปรแกรมคือ EmptyQ() และ FullQ()

12 การดำเนินการ EnQ() 1. ตรวจสอบว่า Queue เต็ม ?
โดยการตรวจสอบว่า Rear เท่ากับ MaxStack ? ใช้ Function FullStack() ถ้า Queue เต็ม แสดงว่า “Queue Overflow“ หรือ “Full Queue” แล้วเลิกงาน ถ้า Queue ไม่เต็ม ให้ทำงานข้อที่ 2 และ 3 2. ให้เพิ่มค่าของ Rear อีก 1 3. ใส่ข้อมูลลงใน Queue ในตำแหน่งของตัวแปร Rear

13 การดำเนินการ POP() 1. ตรวจสอบว่า Queue ว่างเปล่า ?
โดยการตรวจสอบว่า Front =Rear เท่ากับ 0 ? ใช้ Function EmptyQueue() ถ้า Queue ว่าง แสดงว่า “Queue Under flow" หรือ “Queue Stack”แล้วเลิกงาน ถ้า Queue ไม่ว่าง ให้ทำงานข้อที่ 2 และ 3 2. นำค่าของ Queue ในตำแหน่ง Front มาเก็บในตัวแปร 3. ให้เพิ่มค่าของ Front อีก 1 4. แสดงค่าที่ DeQ ได้


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

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


Ads by Google