結構定義
typedef int ElemType;
struct Node { ElemType data; struct Node *next; };
struct Queue { struct Node *front, *rear; };
6 操作
- 初始化:front=rear=NULL。
- 入隊:分配節點,尾插,更新 rear;空隊時 front=rear=新節點。
- 出隊:保存 front->data,front=front->next,free 老節點;若空則 rear=NULL。
- 讀隊首:返回 front->data。
- 判空:front==NULL。
- 清空:遍歷 free 所有節點,front=rear=NULL。
關鍵細節
- 入隊尾插賦值順序:`rear = rear->next = newNode` 保證原子性。
- 出隊後檢查 `front==NULL` 同步置空 rear,防野指針。
- 主函數測試:入隊 8 元素,出隊 2,入隊 1,讀隊首,出隊剩餘,清空。
總結
鏈式隊列無容量上限,操作均攤 O(1),代碼短小精悍,是動態數據結構入門必修課。掌握 front/rear 同步更新邏輯即可寫出無 Bug 隊列。