队列的实现 -- 数据结构与算法的javascript描述 第五章
队列也是列表的一种,有不同于列表的规则。
- 先进先出
- 入队方法
- 出队方法
- 可以找到队首
- 可以找到队尾
- 可以查看队列有多长
- 可以查看队列是否为空
这是一个基本的需求,围绕他来实现,当然我们可以自己扩展列表的规则并辅以代码实现
queue.js
/**
* 队列,先进先出 First-In-First-Out
* 入队 出队
* @constructor
*/
function Queue(){
this.dataStore=[];
this.count = length;
this.clear = clear;
this.enqueue = enqueue;
this.dequeue = dequeue;
this.front = front;
this.back = back;
this.toString = toString;
this.empty = empty;
/**
* 队列数量
* @returns {Number}
*/
function length(){
return this.dataStore.length;
}
/**
* 清空队列
*/
function clear(){
this.dataStore = [];
}
/**
* 查询队列是否为空
* @returns {boolean}
*/
function empty() {
if (this.dataStore.length == 0) {
return true;
}
else {
return false;
}
}
/**
* 入列
* @param element
*/
function enqueue(element){
this.dataStore.push(element)
}
/**
* 出列
* @returns {*}
*/
function dequeue(){
return this.dataStore.shift();
}
/**
* 队尾
* @returns {*}
*/
function back() {
return this.dataStore[this.dataStore.length-1];
}
/**
* 队首
* @returns {*}
*/
function front(){
return this.dataStore[0]
}
/**
* 返回队列所有元素
* @returns {string}
*/
function toString(){
var s = '';
for(var i=0;i<this.dataStore.length;i++){
s+= this.dataStore[i]+'\n'
}
return s;
}
}
window.Queue = Queue
Now or nerver .