<script>
class Queue {
constructor(){
this.items = []
}
enqueue(item){
this.items.push(item)
}
dequeue(){
return this.items.shift()
}
size(){
if(this.isEmpty()) return null
return this.items.length
}
isEmpty(){
return this.items.length === 0
}
}
class QueueElement{
constructor(element, priority){
this.element = element
this.priority = priority
}
}
class PriorityQueue extends Queue{
enqueue(element, priority){
// 1.创建queueElement对象
const queueElement = new QueueElement(element, priority)
//2. 考虑如何插入新对象
if(this.isEmpty()){
this.items.push(queueElement)
}else{
let added = false
for(let i = 0; i < this.items.length; i++){
if(this.items[i].priority > queueElement.priority){
this.items.splice(i, 0, queueElement)
added = true
break
}
}
if(!added){
this.items.push(queueElement)
}
}
}
}
const queue = new PriorityQueue()
queue.enqueue('a',1)
queue.enqueue('b',5)
queue.enqueue('c',4)
queue.enqueue('d',3)
queue.items.forEach(item => {
console.log(item.element, item.priority)
})
</script>