数据结构day1-3 优先级队列
一、实现代码
function PriorityQueue() { //可以理解为内部类 function QueueElement(element,priority) { this.element = element; this.priority = priority; } // 属性 this.items = [] // 方法 // 将元素加入队列 PriorityQueue.prototype.enqueue = function(element,priority) { var queueElement = new QueueElement(element,priority) //判断队列是否为空 if (this.items.length == 0) { this.items.push(queueElement) } else { var added = false for (var i=0; i<this.items.length; i++) { if(queueElement.priority < this.items[i].priority) { this.items.splice(i,0,queueElement) added = true break } } if(!added) { this.items.push(queueElement) } } } // 删除前端元素 PriorityQueue.prototype.dequeue = function() { return this.items.shift() } // 查看前端元素 PriorityQueue.prototype.front = function() { return this.items[0] } // 查看队列是否为空 PriorityQueue.prototype.isEmpty = function() { return this.items.length == 0 } // 查看队列中元素个数 PriorityQueue.prototype.size = function() { return this.items.length } // toString 方法 PriorityQueue.prototype.toString = function() { var resultString = '' for (var i=0; i< this.items.length; i++) { resultString += this.items[i].element + '-' + this.items[i].priority + ' ' } return resultString } } var pq = new PriorityQueue() pq.enqueue('abc',111) pq.enqueue('cba',200) pq.enqueue('nba',50) pq.enqueue('nba',66) alert(pq)