程式實現乙個鏈佇列,任意輸入一串兒字元,以@為結束標誌,然後將佇列中的元素逐一取出,列印在螢幕上。**如下所示:
#include"stdio.h"
typedef char elemtype;
typedef struct qnodeqnode,*queueptr;
typedef structlinkqueue;
initqueue(linkqueue *q)
enqueue(linkqueue *q,elemtype e)
dequeue(linkqueue *q,elemtype *e)
/*測試函式*/
main()
printf("the string into the queue is\n");
while(q.front!=q.rear)
printf("\n");
getche();
}
實現結果如下圖所示:
例項與分析:
1.在入佇列操作中,我犯了乙個錯誤,把q->front寫成了p->front,剛開始還比較納悶,為啥錯了,後來感覺是自己不注意......大家需要注意鏈佇列的定義,它是首先定義了乙個qnode類,它是乙個佇列的元素類(佇列中每個元素的型別都是qnode),說白了就是先定義乙個鍊錶,再用鍊錶定義乙個佇列,就是所謂的鏈佇列了。在入佇列操作中,p只是乙個活動指標,它是qnode型別,而不是linkqueue型別,所以沒有p->front。
2.為什麼在出佇列操作中,如果隊頭就是隊尾(也就是佇列中只有乙個元素的情況),要修改隊尾指標?由於此時刪除隊頭元素後該隊列為空,所以要修改隊尾指標,否則下次判斷的時候無法知道佇列已經空了。
資料結構 鏈佇列
佇列沒完全看懂 include include define datatype int 定義節點結構 typedef struct nodequeuenode 定義頭節點 typedef structlinkqueue 初始化鏈佇列,頭節點置空 void initqueue linkqueue q ...
資料結構 鏈佇列
課程實驗,多有不足 include include include define true 1 define false 0 define ok 1 define error 0 typedef int queueelementtype typedef struct node linkqueueno...
資料結構 鏈佇列
鏈式佇列的實現思想同順序佇列類似,只需建立兩個指標 命名為 top 和 rear 分別指向鍊錶中佇列的隊頭元素和隊尾元素 圖 1 所示為鏈式佇列的初始狀態,此時佇列中沒有儲存任何資料元素,因此 top 和 rear 指標都同時指向頭節點。在建立鏈式佇列時,強烈建議初學者建立乙個帶有頭節點的鍊錶,這樣...