JavaScript 队列
队列是一种 FIFO(First In First Out),队列和栈结构不同,栈是一种后进先出的结构,而队列是一种先进先出的结构。队列也是一种表结构,不同的是队列只能在队尾插入元素,在队首删除元素,可以将队列想象成在柜台排号,排在前面的人拥有优先服务权。队列用在很多地方,比如提交操作系统执行一系列的进程,打印任务池等,一些仿真系统使用队列来模拟银行或者超时里排队的顾客。
1、创建
使用数组创建一个用于存储队列中元素的数据结构。
function Queue(){
//这里是属性和方法
this.dataStore = [];
this.enqueue = enqueue;
this.dequeue = dequeue;
this.front = front;
this.back = back;
this.toString = toString;
this.empty = empty;
}
//取出数组的最后一个元素
function back(){
return this.dataStore[this.dataStore.length-1];
}
//返回数组中元素的个数
function count(){
return this.dataStore.length;
}
2、添加
enqueue(element(s)):向队列尾部添加一个(或多个)新的项。
// 入队,就是在数组的末尾添加一个元素
function enqueue(element){
this.dataStore.push(element);
}
3、移除
dequeue():移除队列的第一(即排在队列最前面的)项,并返回被移除的元素。
// 出队,就是删除数组的第一个元素
function dequeue(){
return this.dataStore.shift();
}
4、取出第一个元素
front():返回队列中第一个元素——最先被添加,也将是最先被移除的元素。队列不做任何变动(不移除元素,只返回元素信息——与 Stack 类的 peek 方法非常类似)。
// 取出数组的第一个元素
function front(){
return this.dataStore[0];
}
5、判断是否为空
isEmpty():如果队列中不包含任何元素,返回 true,否则返回 false。
// 判断是否为空
function empty(){
if(this.dataStore.length == 0){
return true;
}else{
return false;
}
}
6、打印队列
function toString(){
var retStr = "";
for (var i=0; i<this.dataStore.length; ++i) {
retStr += this.dataStore[i] + " "
}
return retStr;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: JavaScript Stack 类
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论