คลาสของเราจะมีฟังก์ชันดังต่อไปนี้ -
- enqueue(element):ฟังก์ชั่นเพิ่มองค์ประกอบในคิว
- dequeue():ฟังก์ชันที่ลบองค์ประกอบออกจากคิว
- peek():ส่งกลับองค์ประกอบจากด้านหน้าของคิว
- isFull():ตรวจสอบว่าเราถึงขีดจำกัดองค์ประกอบในคิวหรือไม่
- isEmpty():ตรวจสอบว่าคิวว่างหรือไม่
- clear():ลบองค์ประกอบทั้งหมด
- display():แสดงเนื้อหาทั้งหมดของอาร์เรย์
เริ่มต้นด้วยการกำหนดคลาสอย่างง่ายด้วยคอนสตรัคเตอร์ที่ใช้ขนาดสูงสุดของคิวและฟังก์ชันตัวช่วยที่จะช่วยเราเมื่อเรานำฟังก์ชันอื่นๆ สำหรับคลาสนี้ไปใช้ นอกจากนี้เรายังต้องกำหนดโครงสร้างอื่นให้เป็นส่วนหนึ่งของต้นแบบคลาส PriorityQueue ที่จะมีลำดับความสำคัญและข้อมูลเกี่ยวกับแต่ละโหนด ขณะที่เราใช้สแต็ค เราจะใช้ Priority Queue โดยใช้ Arrays ด้วยเช่นกัน
ตัวอย่าง
class PriorityQueue { constructor(maxSize) { // Set default max size if not provided if (isNaN(maxSize)) { maxSize = 10; } this.maxSize = maxSize; // Init an array that'll contain the queue values. this.container = []; } // Helper function to display all values while developing display() { console.log(this.container); } // Checks if queue is empty isEmpty() { return this.container.length === 0; } // checks if queue is full isFull() { return this.container.length >= this.maxSize; } } // Create an inner class that we'll use to create new nodes in the queue // Each element has some data and a priority PriorityQueue.prototype.Element = class { constructor (data, priority) { this.data = data; this.priority = priority; } }
เราได้กำหนดฟังก์ชันเพิ่มเติมอีก 2 อย่างคือ isFull และ isEmpty เพื่อตรวจสอบว่าสแต็กเต็มหรือว่างเปล่า
ฟังก์ชัน isFull จะตรวจสอบว่าความยาวของคอนเทนเนอร์เท่ากับหรือมากกว่า maxSize และส่งคืนตามนั้นหรือไม่
ฟังก์ชัน isEmpty จะตรวจสอบว่าคอนเทนเนอร์มีขนาดเท่ากับ 0 หรือไม่
สิ่งเหล่านี้จะมีประโยชน์เมื่อเรากำหนดการดำเนินการอื่นๆ ฟังก์ชันที่เรากำหนดตั้งแต่บัดนี้เป็นต้นไปจะเข้าสู่คลาส PriorityQueue