stack與queue的使用
- 一.stack與queuej基礎
- 1.stack
- 1.1基本認識
- 1.2示例代碼
- 代碼功能解析
- 2.queue
- 2.1基礎知識
- 操作說明
- 2.2示例代碼
- 代碼分析
一.stack與queuej基礎
1.stack
1.1基本認識
以上圖片展示了棧(stack)這種數據結構的基本操作示意。棧是一種遵循后進先出(LIFO,Last In First Out)原則的線性數據結構。
push()
:這是棧的入棧操作,用于將元素添加到棧頂。pop()
:這是棧的出棧操作,用于移除棧頂元素。top
:表示棧頂位置,棧頂是棧中最后一個被添加的元素所在的位置。
棧廣泛應用于各種場景,例如函數調用時的棧幀管理、表達式求值、括號匹配等問題的解決。
1.2示例代碼
#include<iostream>
#include<stack>
#include<queue>
using namespace std;void test01()
{stack<int> st;st.push(1);st.push(2);st.push(3);st.push(4);st.push(5);cout << st.size() << endl;while (!st.empty()){cout << st.top() << " ";st.pop();}
}int main() {test01();return 0;
}
代碼功能解析
test01
函數:- 首先定義了一個整型棧
stack<int> st;
。 - 然后依次將
1
、2
、3
、4
、5
這幾個整數壓入棧中。 - 使用
cout << st.size() << endl;
輸出棧的大小,此時棧中有5
個元素,所以會輸出5
。 - 接著使用
while
循環,只要棧不為空(!st.empty()
),就輸出棧頂元素(st.top()
)并彈出棧頂元素(st.pop()
)。按照棧后進先出的原則,輸出順序會是5 4 3 2 1
。
- 首先定義了一個整型棧
main
函數:在main
函數中調用了test01
函數來執行上述操作。
2.queue
2.1基礎知識
操作說明
- 入隊(enqueue):元素從隊尾加入,新元素排末尾,后續入隊元素添右側 。
- 出隊(dequeue):元素從隊頭離開,遵循先進先出(FIFO)原則,先入隊的先出,出隊后隊頭后移 。
2.2示例代碼
#include<iostream>
#include<stack>
#include<queue>
using namespace std;void test02()
{queue<int> qu;qu.push(1);qu.push(2);qu.push(3);qu.push(4);qu.push(5);cout << qu.size() << endl;while (!qu.empty()){cout << qu.front() << " ";qu.pop();}
}int main() {test02();return 0;
}
代碼分析
test02
函數:- 首先定義了一個整型隊列
queue<int> qu;
。 - 然后依次將
1
、2
、3
、4
、5
這幾個整數壓入隊列中。 - 使用
cout << qu.size() << endl;
輸出隊列的大小,此時隊列中有 `` 個元素,所以會輸出5
。 - 接著使用
while
循環,只要隊列不為空(!qu.empty()
),就輸出隊列的隊頭元素(qu.front()
)并彈出隊頭元素(qu.pop()
)。按照隊列先進先出的原則,輸出順序會是1 2 3 4 5
。
- 首先定義了一個整型隊列
main
函數:在main
函數中調用了test02
函數來執行上述操作。