JavaScript 循环双端队列

本文最后更新于 2025年1月2日 晚上

基于内存预装载的循环双端队列,部署在 Node.js 环境。

Github Repo | npm package
Language: en | zh-cn
License: MIT license


原理

将队列以循环方式存储,维护队首及队尾指针。

队列空间不足时,将空间装载到原来的 $1.75$ 倍,并拷贝队列。


使用方法

安装和导入模块

1
npm install circular-deque
1
const deque = require('circular-deque');

创建对象 | constructor()

1
2
const t = new deque(); // #1
const t = new deque(10); // #2

方法 #1:不预分配长度。
方法 #2:根据程序需要预分配 $\text{length}$ 的长度。

获取队首/队尾元素 | front() & back()

1
2
let x = t.front();
let x = t.back();

时间复杂度:$O(1)$。

从队首/队尾插入元素 | push_front() & push_back()

1
2
t.push_front(x);
t.push_back(x);

时间复杂度:大多数 $O(1)$,最坏 $O(\text{length})$ (需要扩展长度时)。

从队首/队尾弹出元素 pop_front() & pop_back()

1
2
t.pop_front();
t.pop_back();

时间复杂度:$O(1)$。


往期版本

v1.0.0

错误版本,写挂了 QWQ
请不要使用该版本。

v1.0.1

  1. 修正 Bug,添加 README 文档。
  2. 优化 pop 操作,减小空间开销。

开发计划

  1. 根据数据结构性能表现,优化参数。
  2. 检查内存泄漏。
  3. 增加函数映射,如 enqueuepop 等。

JavaScript 循环双端队列
https://preview.algo-x.cn/articles/JS-Circular-Deque/
作者
Taoran
发布于
2024年12月23日
更新于
2025年1月2日
许可协议