共计 1009 个字符,预计需要花费 3 分钟才能阅读完成。
什么是队列
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。允许插入的端是队尾,允许删除的端是队头。队列是一个先进先出的线性表。
队列结构概念:入队、出队、队列头、队列尾
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(‘ 全部玩家输了 ’)
}
此章完结,下一章链表欢迎关注,以便第一时间获取最新的文章