优先级队列 实现方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>优先级队列</title>
</head>
<body>
<script>
// 封装优先级队列类
function PriortyQueue(){
// 内部类
function QueueElement(element, priority){
this.element = element
this.priority = priority
}
// 封装属性
this.items = []
// 1 实现插入方法
PriortyQueue.prototype.enqueue = function(element,priority){
// 1 创建 QueueElement 对象
var queueElement = new QueueElement(element,priority)
// 2 判断队列是否为空
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)
}
}
}
// 2 从队列中删除前端元素
PriortyQueue.prototype.dequeue = function(){
return this.items.shift()
}
// 3 查看前端的元素
PriortyQueue.prototype.front = function(){
return this.items[0]
}
// 4 查看队列是否为空
PriortyQueue.prototype.isEmpty = function(){
return this.items.length == 0
}
// 5 查看队列中元素的个数
PriortyQueue.prototype.size = function(){
return this.items.length
}
// 6 toString方法
PriortyQueue.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 PriortyQueue()
pq.enqueue('abc',111)
pq.enqueue('abc',200)
pq.enqueue('abc',50)
pq.enqueue('abc',60)
console.log(pq)
</script>
</body>
</html>
我是Eric,手机号是13522679763

浙公网安备 33010602011771号