队列
三五七言
不要让数据结构成为天花板
相关代码
特点
先进先出的原则
队列是一个线性结构,特点是在某一端添加数据,在另一端删除数据
用途:
模拟流程或其他带有抽象排队属性的事物或逻辑,例如时间循环队列,发布订阅模式的回调队列等等。
基本方法
enqueue()
在队尾插入一个元素dequeue()
从队头删除一个元素getHeader()
获取队头的元素getTail()
获取队尾的元素getLength()
获取队列的长度isEmpty()
判断队列是否为空队列
/** * 队列基本方法 enqueue()在队尾插入一个元素 dequeue()从队头删除一个元素 getHeader()获取队头的元素 getTail()获取队尾的元素 getLength()获取队列的长度 isEmpty()判断队列是否为空队列 */ class Queue { constructor() { this.queue = [] } // 入队 enqueue(item) { this.queue.push(item) } //出队 dequeue() { return this.queue.shift() } //获取队头 getHeader() { return this.queue[0] } //获取队尾数据 getTail() { return this.queue[this.queue.length - 1] } getLength() { return this.queue.length } //判断空 isEmpty() { return this.queue.length === 0 } } module.exports = Queue
双向队列
循环队列
使用front
和rear
两个指针分别代表队列的头和尾,实际对外表现的队列是front
和rear
所指向的元素构成的。为了复用存储空间,循环队列
在存储结构的实现上是首位相连的。
- 基本要素
front指针
指向队头rear指针
指向队尾size
队列的长度length
存储空间的大小
- 基本方法
enqueue()
元素入队dequeue()
元素出队isEmpty()
判断队空isFull()
判断队满getSize()
获取队列长度getLength()
获取存储空间长度clear()
清空队列