两个栈实现一个队列(C/C++)

来源:互联网 发布:mysql for mac 安装 编辑:程序博客网 时间:2024/05/21 13:28
#include<iostream>#include<stack>using namespace std;template<class T>struct MyQ{void push(T &t) //输入数据到队列中:即往栈1内压栈{s1.push(t);}T front() //获取队列元素{if (s2.empty()){if (s1.size() == 0) throw;while (!s1.empty()){s2.push(s1.top());s1.pop();//将s1的栈顶元素弹出销毁}}return s2.top();}void pop()////删除队列元素{if (s2.empty()){while (!s1.empty()){s2.push(s1.top());s1.pop();}}if (!s2.empty()){s2.pop();}}//声明两个栈stack<T> s1;stack<T> s2;};int main(){MyQ<int> mq;int i;for (i = 0; i < 10; i++){mq.push(i);}for (i = 0; i < 10; i++){cout << mq.front() << endl;mq.pop();}system("pause");return 0;}

阅读全文
0 0
原创粉丝点击