数据结构—队列(Queue)
队列
三五七言
不要让数据结构成为天花板
相关代码
特点
先进先出的原则
队列是一个线性结构,特点是在某一端添加数据,在另一端删除数据
用途:
模拟流程或其他带有抽象排队属性的事物或逻辑,例如时间循环队列,发布订阅模式的回调队列等等。
基本方法
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()清空队列

浙公网安备 33010602011771号