31 มี.ค. 2021 เวลา 13:57 • การศึกษา
Data Structures & Algorithms : EP02 - โครงสร้างข้อมูลแบบคิว ( Queue ) เมื่อพูดถึงคิว เรามักจะพบเจอบ่อยในชีวิตประจำวัน เช่น การเข้าแถวซื้ออาหาร เข้าคิวรอพบหมอตรวจ เข้าคิวรับยา เข้าคิวซื้อตั๋ว. เป็นต้น
ในทางคอมพิวเตอร์มีการประยุกต์การใช้งานคิว ( Queue ) ในหลากหลายระบบ ยกตัวอย่างที่พบบ่อย เช่นระบบเข้าคิวพิมพ์เอกสาร
Queue
คิว ( Queue ) เป็นโครงสร้างข้อมูลที่มีลักษณะการทำงานแบบ FIFO : First-In , First-Out Order ซึ่งหมายความว่าข้อมูลไหนเข้ามาก่อน ก็จะได้นำไปใช้งานก่อน ซึ่งจะต่างจาก สแต็ก ( Stack ) ที่เป็นแบบ LIFO
Source : https://en.wikipedia.org/wiki/Queue_(abstract_data_type)
การเพิ่มข้อมูล ( Enqueue ) จะมีลักษณะเพิ่มเข้ามาทางด้านหลังของท่อ ( Back ) และการดึงข้อมูล ( Dequeue ) ก็จะดึงจากฝั่งหน้าท่อ ( Front )
ตัวอย่างโค้ดการทำงานของคิว ( Queue )
Code python : Queue
จากตัวอย่างโค้ด ทำการสร้างคลาส ( Class ) ชื่อว่า Queue() โดยภายในคลาส ( Class ) มีการสร้างฟังก์ชั่นการทำงานต่างๆดังนี้
- __init__() : ฟังก์ชั่นนี้เป็นฟังก์ชั่นที่เริ่มต้นการทำงานเมื่อมีการเรียกใช้งานคลาส ( Class ) : Queue() โดยภายในมีการประกาศตัวแปรเก็บข้อมูลอาร์เรย์ _array และตัวแปร _HEAD สำหรับเก็บค่าอินเด็กส์ (​ Index ) ของอาร์เรย์
- count() : เป็นฟังก์ชั่นที่เอาไว้สำหรับนับจำนวนข้อมูลใน อาร์เรย์ _array
- is_empty() : ฟังก์ชั่นนี้ เป็นฟังก์ชั่นสำหรับเช็คว่าอาร์เรย์ _array ว่างหรือไม่ ถ้าว่างก็จะคืนค่า True กลับมา ถ้ามีเช็คแล้วยังมีข้อมูลในอาร์เรย์ _array ก็จะคืนค่า False กลับมา
- enqueue() : เป็นฟังก์ชั่นที่ไว้สำหรับเพิ่มข้อมูลเข้าไปในคิว ( Queue ) โดยจากตัวอย่างคิว ( Queue ) จะเก็บข้อมูลประเภทเลขจำนวนเต็ม ( Integer ) เมื่อมีการเรียกใช้งานฟังก์ชั่นนี้ ตัวเลขจาก element จะถูกเพิ่มเข้าไปในอาร์เรย์ _array
- dequeue() : เป็นฟังก์ชั่นที่ไว้สำหรับดึงข้อมูลจากคิว ( Queue ) ออกมาซึ่งภายในฟังก์ชั่น จะตรวจเช็คข้อมูลว่ามีข้อมูลหรือไม่ ถ้ามี ก็จะทำการดึงข้อมูลลำดับแรก _HEAD = 0 ของอาร์เรย์ออกมา เก็บไว้ใน _first_order เสร็จแล้วก็จะทำการลบข้อมูลในอาร์เรย์ตำแหน่งแรก และคืนค่ากลับไป
- display() : ฟังก์ชั่นสุดท้าย เป็นฟังก์ชั่นที่แสดงข้อมูลรายการทั้งหมดที่มีในคิว ( Queue ) ถ้าไม่มีข้อมูลในคิว ( Queue ) ก็จะแสดงค่า Error : Queue is empty!. ออกมาแทน
Call Queue
เริ่มต้นทำการเรียกใช้งานคิว ( Queue ) จากนั้นทดสอบการเพิ่มข้อมูลตัวเลข 1,2,3 ตามลำดับเข้าไปในคิว ( Queue ) โดยเรียกใช้งานฟังก์ชั่น enqueue() ซึ่งเมื่อแสดงผลออกมาจะได้ข้อมูล 1,2,3 ตามลำดับ
Enqueue
จากนั้นทดสอบดึงค่าจากคิว ( ​Queue ) โดยการเรียกใช้งานฟังก์ชั่น dequeue() ซึ่งผลลัพธ์ที่ได้ จะได้ข้อมูลตัวเลข 1 ออกมา และข้อมูลในคิว (​ Queue ) จะเหลือเพียง 2,3 เท่านั้น
Dequeue
เสร็จแล้วทดสอบทำการเพิ่มตัวเลข 1 กลับไปอีกครั้งเพื่อดูว่าตัวเลข 1 นั้นจะไปต่อคิวหรือไม่ ซึ่งผลลัพธ์ที่ได้คือ เลข 1 ที่เพิ่มเข้าไปทีหลัง ก็จะไปต่อท้ายเลข 3 ที่อยู่ในคิว ( Queue )
Enqueue Again
สำหรับ EP นี้เป็นการอธิบายการใช้งานคิว ( Queue ) พื้นฐานคร่าวๆ ในการประยุกต์การใช้งานจริง ก็จะมีการเพิ่มเติ่มในส่วนต่างๆ ซึ่งขึ้นอยู่กับระบบงานที่จะประยุกต์ใช้นั้นๆ

ดูเพิ่มเติมในซีรีส์

โฆษณา