本文实例讲述了JavaScript数据结构与算法之队列原理与用法。分享给大家供大家参考,具体如下:
队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。队列用于存储按顺序排列的数据,先进先出,这点和栈不一样(后入先出)。在栈中,最后入栈的元素反而被优先处理。我们现在可以把队列想象对我们去餐馆吃饭的情景,很多人排队吃饭,排在最前面的人先打饭。新来的人只能在后面排队。直到轮到他们为止。
一:对队列的操作
队列有2种主要的操作,向队尾中插入新元素enqueue()方法和删除队列中的队首的元素的dequeue()方法,另外我们还有一个读取队头的元素,这个方法我们可以叫front()方法。该方法返回队头元素等等方法。
看到如上描述,我们很多人可能会想到数组,数组里面也有2个方法和上面的方法功能类似,数组中push()
方法也是往数组后面加入新元素,数组中shift()
方法则可以删除数组里面的第一个元素。如下代码:
var arrs = []; arrs.push("a"); arrs.push("b"); console.log(arrs); // ["a","b"]; arrs.shift(); console.log(arrs); // ['b'];
下面我们可以使用上面的数组中的push()
和shift()
的2个方法来封装我们的队列Queue类;
1. 我们可以先定义一个构造函数Queue类,如下:
function Queue() { this.dataStore = []; }
如上:this.dataStore = [];
空数组时存储队列中所有的元素的。
2. 向队尾中添加一个元素方法如下:
function enqueue(element) { this.dataStore.push(element); }
3. 删除队首的元素如下:
function dequeue() { return this.dataStore.shift() }
4. 读取队首的元素如下:
function front() { return this.dataStore[0]; }
5. 读取队尾的元素如下:
function back() { return this.dataStore[this.dataStore.length - 1]; }
6. 显示队列中的所有元素
function toString() { var retStr = ""; for(var i = 0; i < this.dataStore.length; ++i) { retStr += this.dataStore[i] + "\n"; } return retStr; }
7. 判断队列是否为空如下:
function empty(){ if(this.dataStore.length == 0) { return true; }else { return false; } }
内容版权声明:除非注明,否则皆为本站原创文章。