<b><em>代碼運行環境:任何可以運行Javascript的環境即可。</em></b>
第一章:隊列
1. 什么是隊列?
<b>特性:先進去的元素,肯定先出隊列。( FIFO )
生活中最常見的就是排隊買車票。</b>
隊列是一種特殊的線性表;
最開始的隊列總是空的
它只允許在表的前端(front)進行刪除操作;
而在表的后端(rear)進行插入操作;
隊列是一種操作受限制的線性表;
進行插入操作的端稱為隊尾( 入隊 );
進行刪除操作的端稱為隊頭 ( 出隊 );
第一個插入的元素就是隊頭;
說到隊列,肯定需要提到的是數組,數組在Javascript里是可修改的對象,以下是數組的一些核心方法:
- concat(item1,item2,...,itemN) 合并一個或者多個數組 返回結果
- push(item) 往數組最后面添加一個或多個元素,使用:“ , ” 分開參數。
- pop() 從數組最后面,移除一個元素,并返回這個值
- shift() 函數刪除數組第一個元素,并返回這個值
- unshift(item1,item2,...,itemN) 向數組的開頭添加一個或更多元素,并返回數組更新后的長度。
- slice(startIndex,endIndex) 從已有的數組中返回選定的元素。
- splice(index,deleteNumber,item1...) 方法向/從數組中添加/刪除項目,然后返回被刪除的項目。
- ...
2.實現
<code>
//我們創建一個類(函數)用來 表示隊列
/*
我們將實現以下方法:
enqueue() 入隊
dequeue () 出隊
front () 返回隊頭
isEmpty() 隊列是否為空
clear() 清空隊列
size() 返回這個隊列的長度
print() 打印隊列所有元素
*/
function Queue(){
var items =[];
this.enqueue = function(elements){
items.push(elements); //入隊,第一個進入的是隊頭,所以之后入隊的元素應該是往后添加。
}
this.dequeue = function(){
return items.shift() //出隊,一個入隊的應該最先出隊,所以應該刪除第一個元素
}
this.front = function(){
return items[0]; //獲取隊頭,返回第一個入隊的元素
}
this.isEmpty = function(){
return items.length == 0;
}
this.clear = function(){
items = [];
}
this.size = function(){
return items.length;
}
this.print = function(){
console.log(items);
}
}
var newQueue = new Queue();
newQueue.enqueue(5); // [5]
newQueue.enqueue(8); //[5,8]
newQueue.enqueue(10); //[5,8,10]
newQueue.dequeue() //[8,10];
newQueue.isEmpty() // false
</code>
...