队列实现栈

来源:互联网 发布:算法时代 下载 编辑:程序博客网 时间:2024/05/21 19:38

队列实现栈



两个队列实现栈:


code:

#include <stdio.h>#include <queue>using namespace std;template<typename T>class Stack{public:bool empty(){return q1.empty() && q2.empty();}void put(const T &e){q1.push(e);}T remove(){while (q1.size() > 1){T t = q1.front();q1.pop();q2.push(t);}T tmp = q1.front();q1.pop();while (!q2.empty()){T t = q2.front();q2.pop();q1.push(t);}return tmp;}private:queue<T> q1, q2;};int main(){Stack<int> s;s.put(1);s.put(2);s.put(3);while (!s.empty()) printf("%d ", s.remove());getchar();return 0;}




一个队列实现栈:


#include <stdio.h>#include <queue>using namespace std;template<typename T>class Stack{public:bool empty(){return que.empty();}void push(const T &e){que.push(e);for (int i = 0; i < que.size() - 1; i++){que.push(que.front());que.pop();}}void pop(){return que.pop();}T top(){return que.front();}private:queue<T> que;};int main(){Stack<int> s;s.push(1);s.push(2);s.push(3);while (!s.empty()){printf("%d ", s.top());s.pop();}getchar();return 0;}


0 0