代碼如下:
#include<stdio.h> #include<stdlib.h> typedef char ElemType; typedef struct QNode { ElemType date; struct QNode *next; }QNode , *QueuePtr; typedef struct { QueuePtr front , rear; }LinkQueue; ///////////////////////////////// //創建一個隊列 void InitQueue(LinkQueue *q) { q->front = q->rear = (QueuePtr)malloc(sizeof(QNode)); if (!q->front) { exit(0); } q->front->next = NULL; } /////////////////////////////////// //入隊列操作 void EnQueue(LinkQueue *q , ElemType e) { QueuePtr p; p = (QueuePtr)malloc(sizeof(QNode)); if (!q->front) { exit(0); } p->date = e; p->next = NULL; q->rear->next = p; q->rear = p; } //////////////////////////////////// //出隊列操作 void DeQueue(LinkQueue *q , ElemType *e) { if (q->front == q->rear) { return; } QueuePtr p = q->front->next; *e = p->date; q->front->next = p->next; if (q->rear == p) { q->rear = q->front; } free(p); } ///////////////////////////////////// //銷毀一個隊列 void DestoryQueue(LinkQueue *q) { while (q->front) { q->rear = q->front->next; free(q->front); q->front = q->rear; } } /////////////////////////////////////// //計算隊列長度 int LenQueue(LinkQueue *q) { int i; QueuePtr p = q->front->next; for (i = 0; p!=NULL; i++) { p = p->next; } return i; } int main() { LinkQueue q; InitQueue(&q); ElemType e; printf("請輸入要入隊列的字符串:"); while ((e = getchar()) != '\n') { if (e!='\n') { EnQueue(&q , e); } } printf("正在打印字符串:"); QueuePtr p = q.front->next; for (int i = 0; i < LenQueue(&q); i++) { printf("%c",p->date); p = p->next; } putchar('\n'); printf("正在銷毀隊列..."); DestoryQueue(&q); printf("銷毀成功!"); return 0; }
運行結果: