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 ...