队列是只能用push和shift完成增删的数组,是一种先进先出的数据结构。
也可以得到两个特征:
- 只允许从尾部添加元素。
- 只允许从头部移除元素
和栈对比下来就是,一般出栈时我们关注的是栈顶的元素arr[arr.length-1],而队列移除元素时,我们关注的是队列的第一位arr[0], 对应的javascript中就是,push去完成添加元素,shift去移除元素。
const queue = []
queue.push('取餐员1')
queue.push('取餐员2')
queue.push('取餐员3')
while(queue.length) {
// 单纯访问队头元素(不出队)
const top = queue[0]
console.log(top,'取餐')
// 将队头元素出队
queue.shift()
}
// 队空
queue // []
//依次输出:
//取餐员1
//取餐员2
//取餐员3
应用场景:
定时发布内容,按顺序执行事件,...
类:
class Queue<T> {
queue: T[]
constructor() {
this.queue = []
}
/**
* 入队
*/
enqueue(item: T) {
return this.queue.push(item)
}
/**
* 出队
*/
dequeue() {
return this.queue.shift()
}
/**
* 队列长度
*/
size() {
return this.queue.length
}
/**
* 是否为空
*/
isEmpty() {
return !!this.queue.length
}
/**
* 队列开头元素
*/
start() {
return this.queue[0]
}
/**
* 队列结尾元素
*/
end() {
return this.queue[this.queue.length - 1]
}
}