鏈式佇列以鏈結串列實現先進先出(FIFO)資料結構,動態分配記憶體、無固定容量限制。本文完整呈現從結構定義、初始化、入隊、出隊到遍歷銷毀的完整實作。
typedef int QElemType;
typedef struct QNode {
QElemType data;
struct QNode *next;
} QNode, *QueuePtr;
typedef struct {
QueuePtr front; // 頭指標(指向哨兵節點)
QueuePtr rear; // 尾指標
} LinkQueue;
void en_Queue(LinkQueue *q, QElemType e) {
QueuePtr temp = (QueuePtr)malloc(sizeof(QNode));
if (temp) {
temp->data = e; temp->next = NULL;
q->rear->next = temp; q->rear = temp;
}
}
void de_Queue(LinkQueue *q, QElemType *e) {
if (q->front == q->rear) return; // 空佇列
QueuePtr temp = q->front->next;
if (q->front->next == q->rear) q->rear = q->front; // 最後一個元素
*e = temp->data;
q->front->next = temp->next;
free(temp);
}
int main() {
LinkQueue q;
create_Queue(&q); // 互動式建立佇列
int top; top_Queue(&q, &top);
printf("隊頭元素: %d\n", top);
int len = getlength_Queue(&q);
for (int i = 0; i < len; i++) {
int k; de_Queue(&q, &k);
printf("%d ", k);
}
clear(&q); return 0;
}

此實作為理解動態資料結構、指標操作與記憶體管理提供了紮實範例。