数据结构用两个栈实现一个队列的实例
2019/7/10 22:45:38
本文主要是介绍数据结构用两个栈实现一个队列的实例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据结构用两个栈实现一个队列的实例
栈是先进后出,队列是先进先出
每次元素都push在st1中,pop的时候如果st2为空,将st1的栈顶元素放在st2的栈底,这样st1的所有元素都放在st2中,st1的栈底就是st2的栈顶,pop st2的栈顶,这样就满足了队列的先进先出。
#include <iostream> using namespace std; #include <stack> #include <stdlib.h> template <class T> class SQueue { public: void Push(const T& value); T Pop(); private: stack<T> st1; stack<T> st2; }; template <class T> T SQueue<T>::Pop() { if (st2.size() <= 0) { if (st1.size() == 0) { exit(1); } while ((st1.size() > 0)) { T& top = st1.top(); st2.push(top); st1.pop(); } } T head = st2.top(); st2.pop(); return head; } template <class T> void SQueue<T>::Push(const T& value) { st1.push(value); } int main() { SQueue<int> sq; for (int i = 0; i < 10; ++i) { sq.Push(i); } for (int i = 0; i < 5; ++i) { cout << sq.Pop() << " "; } for (int i = 0; i < 5; ++i) //分两次验证 { cout << sq.Pop() << " "; } cout << endl; system("pause"); return 0; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
这篇关于数据结构用两个栈实现一个队列的实例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Nacos多环境配置学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos配置中心学习入门指南
- 2024-12-27Nacos配置中心学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos初识学习入门:轻松掌握服务发现与配置管理
- 2024-12-27Nacos初识学习入门:轻松掌握Nacos基础操作
- 2024-12-27Nacos多环境配置学习入门