การจัดคิวองค์ประกอบใน PriorityQueue หมายถึงการเพิ่มองค์ประกอบในอาร์เรย์ตามลำดับความสำคัญขององค์ประกอบ เราจะพิจารณาว่าตัวเลขที่สูงกว่าจะมีลำดับความสำคัญสูงกว่า เราจะวนรอบคอนเทนเนอร์จนกว่าเราจะพบลำดับความสำคัญที่ต่ำกว่า แล้วเพิ่มองค์ประกอบที่นั่น ถ้าไม่เช่นนั้นเราจะดันไปที่ส่วนท้ายของภาชนะ
โปรดทราบว่าเรากำลังสร้างวัตถุองค์ประกอบที่มีข้อมูลและลำดับความสำคัญ ดังนั้นเราจึงสามารถใช้ฟังก์ชัน enqueue ได้ดังนี้ -
ตัวอย่าง
enqueue(data, priority) { // Check if Queue is full if (this.isFull()) { console.log("Queue Overflow!"); return; } let currElem = new this.Element(data, priority); let addedFlag = false; // Since we want to add elements to end, we'll just push them. for(let i = 0; i < this.container.length; i ++) { if(currElem.priority < this.container[i].priority) { this.container.splice(i, 0, currElem); addedFlag = true; break; } } if (!addedFlag) { this.container.push(currElem); } }
คุณสามารถตรวจสอบว่าฟังก์ชันนี้ทำงานได้ดีหรือไม่โดยใช้ -
ตัวอย่าง
let q = new PriorityQueue(4); q.enqueue("Hello", 3); q.enqueue("World", 2); q.enqueue("Foo", 8); q.display();
ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
[ { data: 'World', priority: 2 }, { data: 'Hello', priority: 3 }, { data: 'Foo', priority: 8 } ]
ดังที่คุณเห็นองค์ประกอบต่างๆ อยู่ในลำดับการจัดเรียง ฟังก์ชัน enqueue ทำงานเหมือนกับการแทรกของการเรียงลำดับการแทรก