优先级队列: 优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素,可设较小的数字具有较高的优先级。
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//封装优先级队列
function PriorityQueue() {
function QueueElement(element, priority) {
this.element = element;
this.priority = priority;
}
//属性
this.items = [];
//方法
//1.实现插入方法
PriorityQueue.prototype.enqueue = function (element, priority) {
//创建PriorityQueue对象
var priorityQueue = new QueueElement(element, priority)
//判断队列是否为空
if (this.items.length == 0) {
this.items.push(priorityQueue)
} else {
var added = false
for (var i = 0; i < this.items.length; i++) {
if (priorityQueue.priority < this.items[i].priority) {
this.items.splice(i, 0, priorityQueue)
added = true
break
}
}
if (!added) {
this.items.push(priorityQueue)
}
}
}
//2.删除元素
PriorityQueue.prototype.deQueue = function () {
return this.items.shift();
}
//3.查看元素
PriorityQueue.prototype.front = function () {
return this.items[0];
}
//4.查看是否为空
PriorityQueue.prototype.isEmpty = function () {
return this.items.length == 0
}
//5.查看元素的个数
PriorityQueue.prototype.size = function () {
return this.items.length
}
//6.toSting方法
PriorityQueue.prototype.toString = function () {
let str = ""
for (let i = 0; i < this.items.length; i++) {
str += this.items[i].element + ":" + this.items[i].priority + '\xa0\xa0\xa0'
}
return str
}
}
let qu = new PriorityQueue();
qu.enqueue('lilei', 10)
qu.enqueue('ada', 100)
qu.enqueue('hua', 101)
qu.enqueue('adrc', 52)
alert(qu)
</script>
</body>
</html>
结果: