双端队列(Double-Ended Queue, Deque)是一种两端都可以进行入队和出队操作的线性表。
输入受限的双端队列: 输出受限的双端队列:
只能从队尾入 → → 从队头入
┌──────────────────┐ ┌──────────────────┐
← │ 数据区 │ ← │ 数据区 │ →
从队头出 从队尾出 从队尾入 只能从队尾出
#define MaxSize 100
typedef struct {
ElemType data[MaxSize];
int front, rear; // 队头和队尾指针
} Deque;
| 操作 | 普通队列 | 双端队列 |
|---|---|---|
| 入队 | 只能队尾 | 队头/队尾均可 |
| 出队 | 只能队头 | 队头/队尾均可 |
| 表达能力 | 受限 | 更强 |
四种基本操作:队头入队 push_front(x);队尾入队 push_back(x);队头出队 pop_front();队尾出队 pop_back()。
输入受限(只能从队尾入、两端都可以出),输入序列 1,2,3,4,判断哪些输出序列合法:
| 序列 | 模拟 | 结论 |
|---|---|---|
| A. 4,1,3,2 | 1→2→3→4 入队,队尾出 4 ✓;队头出 1 ✓;队尾出 3 ✓;队尾出 2 ✓ | 合法 ✓ |
| B. 4,2,3,1 | 入 1,2,3,4,队尾出 4 ✓;此时队头是 1 队尾是 3,无法出 2 ✗ | 不合法 ✗ |
| C. 1,2,3,4 | 入一个出一个(队头出),退化为普通队列 | 合法 ✓ |
| D. 4,3,2,1 | 全部入队后队尾依次出,退化为栈 | 合法 ✓ |
输入受限,输入 1,2,3,4,问 4,2,3,1 是否合法?
(暂无关联知识点)
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。