欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

STL中的栈结构和队列结构

发布时间:2025/4/16 编程问答 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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中的栈结构和队列结构的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。