欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > 使用双端队列deque模拟栈stack

使用双端队列deque模拟栈stack

2025/4/29 6:48:29 来源:https://blog.csdn.net/Arthur__Cui/article/details/147594161  浏览:    关键词:使用双端队列deque模拟栈stack

使用双端队列deque模拟栈stack

今天的内容有点简单~

众所周知🤓👆,栈作为一个先进后出的结构,在计算机的世界确实能够发挥很多的作用。

而我们C++祖师爷本贾尼是第一批把这个结构作为实实在在的容器做进std的人~

在这里插入图片描述

那为了更好的了解stack的玩法,我们使用vector和list的结合体----deque双端队列来深入探索stack的前因后果。


首先我们需要明确需要模拟实现stack哪些接口。按照实际需求,我们只需要实现:

● push() 入栈

● pop() 出栈

● top() 获取栈顶元素

● empty() 判空

好,知道了目标我们接下来只用看下结构了。结构挑的好,简介代码少不了~😎👆

那我们来看看,究竟这个结构怎么写会让模拟stack变得如此简单呢?

template<class T,class Container = deque<T>>class stack {public:void push(const T& x){_con.push_back(x);}void pop()    {_con.pop_back();}const T& top()    {return _con.back();}bool empty()    {return _con.empty();}private:Container _con;

写完了。

是的,你没听错,写完了!!

这里最最精妙的玩法就是使用了函数模板来重构了一下deque,之后在对应的接口返回一下封装好的deque接口我们就能很简单的模拟出来了~

如果不信的话我们来使用以下代码测试一下:

void test_stack(){stack<int> st;st.push(1);st.push(2);st.push(3);st.push(4);st.push(5);while (!st.empty())//遍历栈和队列采用不为空的while循环 然后输出栈顶元素后删除即可{cout << st.top() << " ";st.pop();}cout << endl;}

测试之后结果都是对的,

哇,发现真的很香😊✌️~~(完)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词