队列是只容许在一端进行插入操做,而在另外一端进行删除操做的线性表。容许插入的端是队尾,容许删除的端是队头。 队列是一个先进先出的线性表 。
队列结构概念:入队、出队、队列头、队列尾数组
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