队列 - 数据结构训练营

接下来,我们将构建一个与栈互补的数据结构--队列。不同之处在于,这次从队列的开头而不是末尾删除项目。删除最旧的项目而不是最新的项目。 同样,因为这只是限制了某些功能,所以也有许多不同的实现方式。一个不错方案是使用稍后会接触的链表。 实现队列数据结构可以提供以下一些运算: 一个生成空队列的构造函数; 将元素插入队列尾部; 移除并返回队头元素; 返回队头元素; 下面我们将依次介绍其实现。 一个生成空队列的构造函数 类似的,队列使用 JavaScript 数组作为列表而不是内存。 constructor() { this.list = []; this.length = 0; } 将元素插入队列尾部 与栈类似,将定义两个函数来添加和删除队列中的项目。 第一个是“入队”。 这会将值推送到列表的末尾。 enqueue(value) { } 移除并返回队头元素 接下来是“出队”,它不是从列表末尾删除项目,而是将从队头开始删除。将第一项 shift 出列表的头部并返回其值。 dequeue() { } 返回队头元素 与栈相同,我们将定义一个 peek 函数,用于获取下一个值而不将其从队列中删除。 peek() { } 这里要注意的一点是,因为使用了列表来实现队列,它继承了 shift 的性能,即线性 O(N) “还行”。 稍后我们将接触到可以实现更快队列的链表。
使用正确的数据结构可以大大简化原本复杂的逻辑。如果很注重性能或想节约内存,那么就需要选择正确的数据结构。来和我一起用 JavaScript 语言来实现一些常用数据结构吧。


运行