<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
//封装优先级队列,priority越小,优先级越高
function PriorityQueue() {
//存放每一个插入元素QueueElement
this.items = [];
//定义内部类--封装插入元素
function QueueElement(element, priority) {
this.element = element;
this.priority = priority;
}
//实现插入操作
PriorityQueue.prototype.enqueue = function(element, priority) {
var qe = new QueueElement(element, priority);
if(this.items.length === 0) {
this.items.push(qe);
} else {
var flag = false; //记录元素是否插入,没有就插入到items最后
for(var i = 0; i < this.items.length; i++) {
if(priority < this.items[i].priority) {
this.items.splice(i, 0, qe);
flag = true;
break;
}
}
if(!flag) { //没有就插入到items最后
this.items.push(qe);
}
}
}
//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.toString
PriorityQueue.prototype.toString = function() {
var result = '';
for(var i = 0; i < this.items.length; i++) {
result += this.items[i].element + '---'+this.items[i].priority+' ';
}
return result;
}
}
var priorityQueue = new PriorityQueue();
priorityQueue.enqueue('abc', 10);
priorityQueue.enqueue('bc', 20);
priorityQueue.enqueue('cv', 6);
priorityQueue.enqueue('re', 34);
console.log(priorityQueue);
</script>
</body>
js实现优先级队列
最新推荐文章于 2024-06-21 20:07:59 发布