鍊錶模擬佇列

2021-09-25 06:20:47 字數 1451 閱讀 4237

佇列是最基礎的資料結構之一,通過構建鍊錶來模擬佇列,更加清晰的理解佇列的意義。

這裡是將佇列作為全域性變數來呼叫,因為不用全域性變數的時候出現好多錯誤,最後還是用了全域性變數。

上**:

#include using namespace std;

#include#includestruct linklist

;struct linkqueue

;linkqueue q;//這裡改為了全域性變數進行呼叫

linkqueue new_lq()//建立乙個帶頭結點的佇列(只是建立乙個頭節點)

linkqueue add_lq(int x)//向佇列中新增元素

void dis()//遍歷佇列元素

}int main()

執行結果

;//linkqueue q;//取消全域性變數

linkqueue new_lq()

linkqueue add_lq(linkqueue &q,int x)//這裡尤其要注意&符號,上午做了一上午不用全域性變數,

最後原因就是這裡出了了問題,

不加&符後面呼叫的函式對q的更改不會儲存吧應該,就是下乙個呼叫會把第乙個呼叫覆蓋

void dis()

}int main()

執行結果和上乙個**一樣,另外在補充乙個沒有&的執行結果:

鍊錶用結構體表示

struct linklist

;

模擬佇列

struct linkqueue

;

f指向隊頭,r指向隊尾

要知道鍊錶佇列的特徵每個元素都是由指標域的後繼指標連線,隊尾入隊、對頭出隊是我們手寫佇列的關鍵思想。

遍歷輸出:

void dis()

}

最最最最重要的一點:

linkqueue add_lq(linkqueue &q,int x)

別忘了加&!!!!

還有還有 定義出來的「指標」需要new出來或者用malloc才會分配記憶體空間(老師說噠)。

因為指標不會分配記憶體空間吧好像……

linklist *p;

p=new linklist;

用單向鍊錶模擬佇列

讓 rear 指標指向的節點的 next 指標指向新節點,然後讓 rear 指標指向下乙個節點。每次出佇列時,都讓 font 指標指向 head 節點的下乙個節點。最後從佇列中彈出 front 節點。資料結構 佇列 鍊錶 建立乙個鍊錶模擬佇列 實現 資料入佇列 資料出佇列 顯示佇列 package ...

(基礎) 陣列模擬鍊錶 棧 佇列

適用於鄰接表 儲存圖和樹 head 表示頭結點的下標 e i 表示節點i的值 ne i 表示節點i的next指標是多少 idx 儲存當你已經用到的那個點 int head,e n ne n idx 初始化 void init 將x插到頭結點 void add to head int x 將x插到下標...

模擬單向雙向鍊錶 模擬棧與佇列 KMP

單鏈表模擬單鏈表 include.h using namespace std const int n 1e5 10 int head,ne n e n idx int n head 指向頭節點 ne i 指向第i個節點的下乙個節點 e i 第i個節點的值 idx 儲存當前已經用到了哪個點 void ...