Kakoola 2020-05-26
// 封装优先级队列 function PriorityQueue() { function QueueElement(element, priority) { this.element = element this.priority = priority } // 封装属性 this.items = [] //1. 实现插入方法 PriorityQueue.prototype.enqueue = function (element, priority) { // 1.创建QueueElement对象 let queueElement = new QueueElement(element, priority) // 2.判断队列是否为空 console.log(this.items) if (this.items.length == 0) { this.items.push(queueElement) } else { let added = false for (let i = 0; i < this.items.length; i++) { if (queueElement.priority < this.items[i].priority) { this.items.splice(i, 0, queueElement) console.log(this.items) added = true break } } if (!added) { this.items.push(queueElement) } } } //2. 从队列中删除前元素 PriorityQueue.prototype.dequeue = ((element, priority) => { return this.items.shift() }) //3. //3.查看前端的元素 PriorityQueue.prototype.front = () => { return this.items[0]; } //4.查看队列是否为空 PriorityQueue.prototype.isEmpty = () => { return this.items.length == 0; } //5.查看队列中的元素个数 PriorityQueue.prototype.size = () => { return this.items.length; } //6.toString方法 PriorityQueue.prototype.toString = () => { let getString = ""; for (let i = 0; i < this.items.length; i++) { getString += this.items[i].element + " "; } return getString; } } // 测试代码 let pq = new PriorityQueue() pq.enqueue("a", 1) pq.enqueue("b", 3) pq.enqueue("c", 2) console.log(pq.items)