| 維度 | 單鏈表 | 佇列 |
|---|---|---|
| 層次 | 實作層 | 介面/行為層 |
| 核心操作 | 插入、刪除、遍歷、查找(任意位置) | enqueue(入隊)、dequeue(出隊)、peek(查看隊首) |
| 存取模式 | 循序(從 head 開始) | 僅限兩端 |
| 記憶體 | 動態分配,節點分散 | 視實作:鏈表動態、陣列固定/循環 |
| 典型實作 | 單向、雙向、循環鏈表 | 鏈式佇列、循環陣列佇列、優先權佇列 |
typedef struct Node { int data; struct Node* next; } Node;
typedef struct { Node *front, *rear; } Queue;
void enqueue(Queue* q, int val) {
Node* n = malloc(sizeof(Node)); n->data=val; n->next=NULL;
if (!q->front) q->front=q->rear=n;
else { q->rear->next=n; q->rear=n; }
}
int dequeue(Queue* q) {
if (!q->front) return -1;
Node* n = q->front; int val=n->data;
q->front=n->next; if (!q->front) q->rear=NULL;
free(n); return val;
}
同樣是 ADT,「後進先出 (LIFO)」,可用單鏈表(頭插/頭刪)或陣列實作。