注:澄清一个bug:
/**
* 删除队首的元素:
*/
function dequeue(){
return this.dataStore.shift();
}

应该有return;

 
队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。
队列用于存储按顺序排列的数据,先进先出,这点和栈不一样,在栈中,最后入栈的元素反而被优先处理。
可以将队列想象成在银行前排队的人群,排在最前面的人第一个办理业务,新来的人只能在后面排队,直到轮到他们为止。
 
队列是一种先进先出的数据结构。
队列被用在很多地方,比如提交操作系统执行的一系列进程、打印任务池等,一些仿真系统用队列来模拟银行或杂货
店里排队的顾客。
 
1.对队列的操作                                              
队列的两种主要操作是:向队列中插入新元素和删除队列中的元素。
插入操作也叫做入队,删除操作也叫做出队。
入队操作在队尾插入新元素,出队操作删除队头的元素。
队列的另外一项重要操作是读取队头的元素。这个操作叫做peek()。
该操作返回队头元素,但不把它从队列中删除。
除了读取队头元素,我们还想知道队列中存储了多少元素,可以使用length 属性满足该需求;
要想清空队列中的所有元素,可以使用clear() 方法来实现。
 
2.用数组实现的队列                                              
JavaScript 中的数组具有其他编程语言中没有的优点,数组的push() 方法可以在数组末尾加入元素,shift() 方法则可删除数组的第一个元素。
 
代码:
<script type="text/javascript">
function Queue(){
this.dataStore = [];
this.enqueue = enqueue;
this.dequeue = dequeue;
this.front = front;
this.back = back;
this.toString = toString;
this.empty = empty;
} /**
* 向队尾添加一个元素
*/
function enqueue(element){
this.dataStore.push(element);
} /**
* 删除队首的元素:
*/
function dequeue(){
this.dataStore.shift();
} /**
* 读取队首的元素:
*/
function front(){
return this.dataStore[0];
} /**
* 读取队尾的元素:
*/
function back(){
return this.dataStore[this.dataStore.length - 1];
} /**
* 显示队列内的所有元素
*/
function toString(){
var retStr = "";
for (var i = 0; i < this.dataStore.length; ++i) {
retStr += this.dataStore[i] + "\n";
}
return retStr;
} /**
* 判断队列是否为空
*/
function empty(){
if(this.dataStore.length == 0){
return true;
}else{
return false;
}
} //测试代码
var q = new Queue();
q.enqueue("Meredith");
q.enqueue("Cynthia");
q.enqueue("Jennifer");
console.log(q.toString());
q.dequeue();
console.log(q.toString());
console.log("Front of queue: " + q.front());
console.log("Back of queue: " + q.back()); </script>

打印:

数据结构与算法JavaScript描述——队列-LMLPHP

 
05-08 08:08