| 維度 | 單鏈表 | 隊列 |
|---|---|---|
| 層次 | **存儲結構**(物理) | **邏輯結構**(抽象) |
| 特徵 | 節點含數據域+指針域,動態分配,非連續存儲 | 先進先出(FIFO),僅允許隊尾入、隊頭出 |
| 實現方式 | — | 可用**數組(循環隊列)**、**鏈表(鏈式隊列)**實現 |
| 操作 | 插入/刪除任意位置 O(1) 指針調整 | Enqueue/Dequeue 固定兩端 |
**單鏈表是實現隊列的其中一種手段**。
同理:棧(LIFO)也可用數組/鏈表實現。
// 鏈式隊列節點(復用單鏈表節點)
struct QueueNode { int data; QueueNode* next; };
struct LinkQueue { QueueNode *front, *rear; };
// 入隊
void EnQueue(LinkQueue* q, int x) {
QueueNode* n = new QueueNode{x, nullptr};
if (q->rear) q->rear->next = n; else q->front = n;
q->rear = n;
}
// 出隊
int DeQueue(LinkQueue* q) {
if (!q->front) return -1;
QueueNode* t = q->front;
int v = t->data;
q->front = t->next;
if (!q->front) q->rear = nullptr;
delete t;
return v;
}