队列
队列是遵循FIFO(First In First Out, 先进先出)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。
创建队列
首先需要一个用于存储队列中元素的数据结果。
function Queue(){
var items = [];
}
队列的方法
enqueue(element) -- 向队列尾部添加一个或多个的项。
dequeue() -- 移除队列的第一(即排在队列最前面的)项,并返回被移除的元素。
front() -- 返回队列中第一个元素,也就是最先被移除的元素。队列不坐任何编订。
isEmpty()--队列是否包含元素。
size() -- 返回队列包含的元素个数。
完整的Queue代码
function Queue(){
var items = ();
this.enqueue = function(element){
items.push(element);
}
this.dequque = function(){
items.shift();
}
this.font = function(){
return items[0];
}
this.isEmpty = function(){
return items.length==0;
}
this.size = function(){
return item.length;
}
}
优先队列
优先队列就是元素的添加和移除是基于一个优先级的。在现实中的例子就是很多时候机场登机的顺序,是头等舱的乘客和商务舱的乘客优先级高于经济舱的乘客。可以先登机。
实现一个优先队列,有两种选项:设置优先级,然后再正确的位置添加元素;或者用入列操作添加元素,然后按照优先级移除它们。我们将会在正确的位置添加元素。
function PriorityQueue(){
var items = ();
function QueueElement(element, priority){
this.element = element;
this.proiority = priority;
}
this.enqueue = function(element, priority){
var queueElement = new QueueElement(element, priority);
if(this.isEmpty()){
item.push(queueElement);
} else {
var added = false;
for(var i=0;i<items.length;i++){
if(queueElement.priority < items[i].priority){
item.splice(i,0,queueElement);
added = true;
break;
}
}
if(!added){
items.push(queueElement);
}
}
}
//其它方法和上面的Queue相同
}
var priorityQueue = new PriorityQueue();
priorityQueue.enqueue("Ana",2);
priorityQueue.enqueue("Tom",1);
priorityQueue.enqueue("Jane",1);
参考书籍:Learning Javascript Data Structures and Algorithms
推荐一个找vue,angular组件的轮子工厂
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。