【数据结构】两个队列实现一个栈

用两个栈实现一个队列,这个问题与“两个队列实现一个”原理非常的相似。只要你明白了”两个队列实现一个栈“的原理,相信聪明的你,就会明白这个问题只是它的变种,所有的异或就会迎刃而解的。这里大家可以参考我的博客http://www.jb51.cc/article/p-wdkfoxdv-bke.html


代码如下:

#define_CRT_SECURE_NO_WARNINGS1
#include<iostream>
usingnamespacestd;

//两个队列实现一个栈
#include<queue>

template<classt>
classstack
{
public:
voidappendTail(constT&x)
{
q1.push(x);
}

voiddeleteTail()
{
if(q2.empty())
{
while(!q1.empty())
{
q2.push(q1.front());
q1.pop();
}
cout<<q2.front()<<"";
q2.pop();
}
else
{
cout<<q2.front()<<"";
q2.pop();
}
}
private:
queue<T>q1;
queue<T>q2;

};


voidtest()
{
Stack<int>s;
s.appendTail(1);
s.appendTail(2);
s.appendTail(3);
s.appendTail(4);
s.deleteTail();
s.deleteTail();
s.deleteTail();
s.deleteTail();

}

intmain()
{
test();
system("pause");
return0;
}

相关文章

【啊哈!算法】算法3:最常用的排序——快速排序       ...
匿名组 这里可能用到几个不同的分组构造。通过括号内围绕的正...
选择排序:从数组的起始位置处开始,把第一个元素与数组中其...
public struct Pqitem { public int priority; ...
在编写正则表达式的时候,经常会向要向正则表达式添加数量型...
来自:http://blog.csdn.net/morewindows/article/details/6...