棧佇列鍊錶演算法總結

2022-06-27 18:33:09 字數 1511 閱讀 2465

1.佇列

struct queue;

2.棧棧的基本操作:

定義棧:stacks;

入棧(定義棧元素):s.push(i);

出棧(刪除棧元素):s.pop();

返回棧頂元素的值:s.top();

判斷棧是否為空:s.empty();   //值為0說明不空   值為1說明棧為空

//

棧的用法例項

#include#include

using

namespace

std;

intmain()

//出棧 假設元素為偶數則出棧

while(!s.empty()) //

當棧不為空時

s.pop();

//出棧

} cout

<

此時棧裡面元素個數為:

"}

棧的基本用法

需注意的問題:

我之前想要處理一堆數,遇到偶數就出棧輸出,輸出棧內部剩餘的數

於是我這樣做了(有問題**):

1

//棧的用法例項

2 #include3 #include4

using

namespace

std;

5int

main()6

16//

出棧 假設元素為偶數則出棧

17for(int i=0;i//

迴圈n個元素

1825

} 26 cout<

輸出棧內現存元素:

"<

27//

輸出棧內現存元素

28while(s.empty()==0)29

33 cout<

34 cout<

此時棧裡面元素個數為:

"35 }

輸入情況:

5

1 2 3 4 5

輸出情況:

輸出棧內現存元素:

5 4 3 2 1

此時棧裡面元素個數為:0

我們可以發現乙個問題:

它偶數2與4是沒有出棧的(未被刪除掉),為什麼呢???

原因在於:上面5個元素入棧以後,棧頂元素此時為5,t%2!=0,所以不進行if(t%2==0)裡面的操作,那麼s.pop()就不會進行,top指標就一直不變(儘管for語句一直執行),t一直都等於5,所以也不會進行偶數出棧

解決方法:

如果要刪除偶數,而輸出奇數時,可以直接在判斷偶數時就輸出,s.pop()一直需要執行,top指標才會往下。

1

for(int i=0;i//

迴圈n個元素 28

else

9 cout<

奇數:"

10 s.pop(); //

出棧 11 }

例題:

棧 佇列 鍊錶(總結)

佇列可以看做是高速路口,進出口需要車輛排成一列,這就是線性結構,在車隊中的車只能在入口選擇是上高速還是原路返回,簡單定義是一種特殊的線性結構,只能在head出做處理。我認為棧的結構很有趣,拿乙個高中數學題來說,三根柱子上套著不同大小的輪盤,要將他們按大小排在一根柱子上,這是乙個數列題,但是我們同樣可...

啊哈!演算法 棧 佇列 鍊錶

特點 管子,兩邊開口,先進先出 first in first out 佇列的三個基本元素 乙個陣列,兩個變數 include using namespace std struct queue typedef struct queue queue 將 struct queue 重新命名為 queue ...

棧 佇列 鍊錶

includestruct queue int main while q.head includeint main maxvalue temp maxvalue temp maxvalue temp 0 for int j 1 j len j maxvalue temp maxvalue temp ...