栈
什么是栈?我们可以将栈理解成一个水桶,将栈内元素理解成直径正好是桶直径的球,如此我们将球放入桶中,后放入的球只能不断往上堆叠,而每次想要拿出一个球就只能拿出最上面的一个球,这就是栈的模型。
头文件以及定义
#include<stack>
stack<int> st; // 定义一个存放int类型的栈
stack<string> st; // 存放string
stack<vector<int>> st; // 是的,STL里的容器可以一个套一个
对栈的操作
stack<int> st;
st.push(5); // 把5压进栈
st.push(3); // 把3压进栈
int x = st.top();// 读取栈顶元素,显然x == 3;
st.pop(); // 把栈顶元素弹出
x = st.top(); // 这时候栈顶元素等于5
int len = st.size(); // 看目前栈里有多少元素
st.empty(); // 判断栈是否为空,为空返回 true,不为空返回false;
队列
什么是队列?如果我们理解了什么是栈,那么队列就会很好理解。顾名思义,队列可以想象成生活中排队,先排进来的先出去,后排进来的后出去,人不能插队,元素也是如此,插入的元素只能排在最后,这就是队列的模型。
头文件以及定义
#include<queue>
queue<int> q; // int类型的队列
queue<string> q; // string类型的队列
对队列的操作
queue<int> q;
q.push(5); // 将5入队
q.push(6); // 将6入队
q.push(7);
int x = q.front(); // 访问队首元素,显然是 5
int y = q.back(); // 访问队尾元素 ,显然是7
q.pop(); // 将队首元素出队 ,5出列
x = q.front(); // 这时队首元素为6;
q.size(); // 查询队列里有多少元素
q.empty(); // 查询队列是否为空
以上只是让大家初步认识栈和队列的表达方式,具体的算法展现和代码应用之后再分享给大家