C 語言使用非迴圈雙向連結串列實現佇列

發表於2016-10-01

在前面兩篇部落格中,我分別使用了靜態陣列動態陣列來模擬迴圈佇列。但是線性表中和佇列最神似的莫過於連結串列了。我在前面也使用了大量的篇幅來講述了連結串列的各種操作。今天我們使用一種比較特殊的連結串列——非迴圈雙向連結串列來實現佇列。首先這裡的說明的是構建的是普通的佇列,而不是迴圈佇列。當我們使用陣列的時候建立迴圈佇列是為了節省儲存空間,而來到連結串列中時,每一個節點都是動態申請和釋放的,不會造成空間的浪費,所以就不需要採用迴圈佇列了。第二,大家在很多書上看到的是使用單連結串列實現佇列,我這裡將會使用帶頭結點尾結點的非迴圈雙連結串列實現,雖然多維護了兩個節點和指標域,但是在連結串列頭尾進行插入刪除的時候不需要遍歷連結串列了,佇列操作變得非常的方便。真正實現了只在頭尾操作。程式碼上傳至https://github.com/chenyufeng1991/Queue_LinkedList

核心程式碼如下:

(1)初始化佇列

(2)入隊,在尾結點插入元素

(3)出隊,在頭結點處刪除節點

(4)列印所有節點

(5)判斷佇列是否為空

(6)測試程式碼

相關文章