什麼是隊列
隊列是隻允許在一端進行插入操作,而在另一端進行刪除操作的線性表。允許插入的端是隊尾,允許刪除的端是隊頭。 隊列是一個先進先出的線性表 。
隊列結構概念:入隊、出隊、隊列頭、隊列尾
js實現棧結構依靠數組
方法名 操作
enqueue 入隊
dequeue 出隊
front 查看隊列頭
isEmpty 檢查隊列是否爲空
size 獲取隊列大小
clear 移除全部元素
代碼實現
class Queue {
constructor() {
// 私有屬性
this._items = [];
}
// 入隊
enqueue(el) {
this._items.push(el);
}
// 出隊
dequeue(el) {
this._items.shift(el);
}
// 查看隊列頭
front() {
return this._items[this._items.length - 1];
}
// 檢查隊列是否爲空
isEmpty() {
return this._items.length === 0;
}
// 查看隊列的大小
size() {
return this._items.length;
}
// 清除隊列
clear() {
this._items = [];
}
}
下面來個例子
炒股遊戲:玩家猜漲跌,猜錯了就出局,遊戲最終結果爲玩家全部輸了
爲什麼是炒股遊戲:找不到圖你讓我怎麼辦,沒辦法只能隨便編了
下面開始碼了
// 玩家列表
let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
// 遊戲規則
function regulation() {
return Math.random() > 0.5
}
function stocks() {
let queue = new Queue()
// 入隊
arr.forEach(item => {
queue.enqueue(item)
})
// 當隊列爲空,說明全部出隊,遊戲結束
while (!queue.isEmpty()) {
for (let i = 0; i < arr.length; i++) {
// 爲true說明玩家猜對了
if (regulation()) {
// 循環隊列
queue.enqueue(queue.dequeue())
console.log(`玩家${arr[i]}贏了`)
} else {
// 出隊
queue.dequeue()
console.log(`玩家${arr[i]}輸了`)
}
}
}
console.log('全部玩家輸了')
}
此章完結,下一章鏈表
歡迎關注,以便第一時間獲取最新的文章