队列的定义
在现实生活中,像队列的例子就是我们平时的排队买票,先来的先买,后来的只能站在末尾,不允许插队。
队列的特征是,先进先出。跟栈一样,队列也是一种操作受限的线性表数据结构。
队列的基本操作:
入列:在队列尾部添加一个元素
出列:从队列头部移除一个元素
队列的实现
//基于数组实现的队列
function Queue(){
var items = [];
//入队
this.enqueue = function(elem){
items.push(elem);
}
//出队
this.dequeue = function(){
return items.shift();
}
//返回队列最前面的项
this.front = function(){
return items[0];
}
//队列是否为空
this.isEmpty = function(){
return items.length == 0;
}
//队列的长度
this.size = function(){
return items.length;
}
//打印队列
this.print = function(){
console.log(items.toString());
}
}
基于链表实现的队列:https://github.com/wangzheng0822/algo/blob/master/javascript/09_queue/QueueBasedOnLinkedList.js
队列的类型
循环队列
循环队列其实是将队列的头尾相连,形成一个环。