队列(Queue)是一种先进先出(First-In-First-Out, FIFO)的数据结构,与栈不同的是,它操作的元素是在两端,而且进行的是不一样的操作。向队列的队尾加入一个元素叫做入队列(enQueue),向队列的队首删除一个元素叫做出队列(delQueue).
ADT
Queue
Javascript描述
---
length,属性,队列长度
dataStore,属性,存储数据
enQueue,方法,入队列
delQueue,方法,出队列
empty,方法,清空队列
front,方法,获得队首元素
rear,方法,获得队尾元素
print,方法,打印队列
// 构造函数
function Queue () {this.length = 0;this.dataStore = [];
}
// 原型核心方法
Queue.prototype = {constructor: Queue,enQueue: function (element) {// 存储元素并使队列长度加1this.dataStore[this.length++] = element;},delQueue: function () {var res = this.dataStore[0], //取得队首元素i;// 当队列不为空if (res !== undefined) {// 这里尽量避免使用js语言特性来实现// 取出队首元素,并让队列后方元素向前移动,队列长度减一// js数组其实已经实现了队列的方法,删除队首shiftif (this.length > 1) {for (i = 0; i
// 其他方法
测试
empty: function () {this.dataStore.length = 0;this.length = 0;
},
front: function () {return this.dataStore[0];
},
rear: function () {return this.dataStore[this.length - 1];
},
print: function () {for (var i = 0; i
var q = new Queue();
q.enQueue('jiavan');
q.enQueue('jiavan2');
q.enQueue('jiavan3');
q.enQueue('jiavan4');
q.print();
q.delQueue(); // jiavan
q.length; // 3
q.front(); //jiavan2
q.rear();// jiavan4
q.empty();
q.dataStore; //[]
系列文章原文地址https://github.com/Jiavan/js4algs GitHub repo上有源码和更好的阅读体验,若有错误欢迎发PR,若对你有所帮助也欢迎star!