您的位置:首页 > 其它

队列实现栈

2015-11-18 23:01 267 查看
队列实现栈

两个队列实现栈:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: