STL中的栈结构和队列结构
生活随笔
收集整理的这篇文章主要介绍了
STL中的栈结构和队列结构
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
队列和栈都是线性结构,但他们都是受限的线性表,即他们的操作是线性表操作的子集,利用线性表作为栈和队列类的基类会大大减轻编程工作量,提高代码的重用性
栈结构————————头文件为<stack>
栈是后进先出的线性表。
empty() //判断堆栈是否为空,若为空则返回真,若不为空,则返回假
pop() //移除栈顶元素
push() //在栈顶压入元素
top() //返回栈顶元素
例题:
//栈是后进先出的线性表 许多软件中的撤销和恢复功能都是用栈实现的 //STL中的栈结构 #include<cstdio> #include<iostream> #include<stack> #include<algorithm>using namespace std;int main() {stack<int>st; //整型STL栈类对象for(int n = 1; n <=5; n++)st.push(n); //将n压入st的栈顶cout << "栈中有" << st.size() << "个元素" <<endl;while(!st.empty()){cout << st.top() <<' '; //获取st的栈顶元素并输出 st.pop(); //弹出st的栈顶元素(不保存) } cout << endl; }堆栈的应用:
根据其特点,可以将堆栈运用到进位制转换上。如十进制数m转换为n进制时,将m连续除以n,所得余数依次是由低位到高位的值
//根据堆栈先进后出的特点,可以将此运用在进位制转化上 #include<stack> #include<iostream> #include<string> #include<vector> #include<list> #include<cstdio>using namespace std;void Conversion(int m, int n) {int e;char c;stack<int>st;while(m > 0){e = m%n;st.push(e);m = m/n;}while(!st.empty()){e = st.top();st.pop();if(e <= 9){cout << e;}else{c = e + 55;cout << c; }}cout << endl; }int main() {int m, n;cin >> m >> n;Conversion(m, n); //进位制转化 }
队列————————STL队列结构
队列是先进先出的线性表,即限定只能在队尾进行入队操作,在对头进行出对的操作
在c++的STL(标准模版库)提供了队列类的操作,共有三种:queue(队列),deque(双端队列),priority_queue(优先队列)
#include<queue> #include<cstdio> #include<iostream> #include<algorithm>using namespace std;int main() {queue<int>q; //整型STL队列类对象for(int n = 1; n <=5; n++)q.push(n); //将每一个n进行入队操作 cout << "队尾元素为" << q.back() << endl; //获取队尾元素并输出while(!q.empty()){cout << q.front() << ' ';q.pop();} cout << endl;cout << "现在对头有" << q.size() << "元素"; }《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读
总结
以上是生活随笔为你收集整理的STL中的栈结构和队列结构的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: STL链式存储结构——————list链
- 下一篇: Bear and Finding Cri