隊列是隻容許在一端進行插入操做,而在另外一端進行刪除操做的線性表。容許插入的端是隊尾,容許刪除的端是隊頭。 隊列是一個先進先出的線性表 。
隊列結構概念:入隊、出隊、隊列頭、隊列尾數組
js實現棧結構依靠數組 dom
方法名 操做
enqueue 入隊
dequeue 出隊
front 查看隊列頭
isEmpty 檢查隊列是否爲空
size 獲取隊列大小
clear 移除所有元素this
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 = []; } }
炒股遊戲:玩家猜漲跌,猜錯了就出局,遊戲最終結果爲玩家所有輸了
爲何是炒股遊戲:找不到圖你讓我怎麼辦,沒辦法只能隨便編了spa
// 玩家列表 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('所有玩家輸了') }
此章完結,下一章鏈表
歡迎關注,以便第一時間獲取最新的文章code