【C++】两个栈实现一个队列

原创 2015年11月19日 20:51:48
//两个栈实现一个队列的思想:
//1.只要实现的是队列的push功能,就把数据push进_PushStack栈。
//2.要实现队列的pop功能时,分两种情况:
//  (1):当_PopStack栈中有数据时,就把_PopStack的栈顶元素pop出去;
//  (2):当_PopStack栈中无数据时,就用一个循环(依次把_PushStack栈中的栈顶数据push进_PopStack,再对
//	  _PushStack栈执行pop操作,直至_PushStack栈为空),再转(1)操作。
#include<iostream>
using namespace std;
#include<stack>
template<class T>
class Queue
{
public:
	void Push(const T& x)
	{
		_PushStack.push(x);
	}
	void Pop()
	{
		if (_PopStack.empty())
		{
			while (!_PushStack.empty())
			{
				_PopStack.push(_PushStack.top());
				_PushStack.pop();
			}
		}
		if (!_PopStack.empty())
		{
			cout << _PopStack.top() << " ";
			_PopStack.pop();
		}
	}
private:
	stack<T>_PushStack;
	stack<T>_PopStack;
};
void Test()
{
	Queue<int>op1;
	op1.Push(1);
	op1.Push(2);
	op1.Push(3);
	op1.Push(4);
	op1.Push(5);
	op1.Push(100);
	op1.Pop();
	op1.Pop();
	op1.Pop();
	op1.Pop();
	op1.Pop();
	op1.Pop();
}
int main()
{
	Test();
	system("pause");
	return 0;
}

C++算法之 两个队列实现一个栈

题目:用两个队列实现一个栈 算法思路: 现有两个队列q1与q2,入栈:如果q1与q2都为空,那么我们选择q1入栈也就是入队列,比如q1入栈 1 2 3 4 ;现在要出栈,后进先出那么4要出栈。但是...

C++算法之 用两个栈实现一个队列

算法思路: 一个栈用来入队列,一个栈用来出队列: 现有两个栈s1 和s2;s1用来入栈,比如  队列进入  1 2 3 4 5 那么s1进栈 1 2 3 4 5 ,现在要出队列,意思就是要1先出来; ...

C/C++之用两个栈实现一个队列的功能

问题:有两个栈s1和s2,实现队列的push和pop功能。 思路:始终维护

利用两个队列实现一个栈(C++版)

题目: 利用两个队列实现一个栈的功能,完成pop() push() top() empty()等功能。 push(x) -- Push element x into stack.pop()...

《剑指offer》:[6]两个栈实现一个队列的C++代码实现

问题:用两个栈实现一个队列,完成在队列尾部插入节点和在队列头部删除结点的功能。 由于栈的特点是先进后出,要想实现队列,必须做到先进先出;      首先将数据输入到stack1中,这时候先进后出,再将...
  • gogoky
  • gogoky
  • 2016年05月26日 11:16
  • 435

两个栈实现一个队列

  • 2013年08月19日 20:40
  • 2KB
  • 下载

【C++面试题】:用两个队列模拟一个栈

#include #include #include using namespace std; template class MyStack { public: void push(T...
  • bxyill
  • bxyill
  • 2012年06月29日 17:25
  • 1032

用两个栈实现一个队列的功能

  • 2012年08月19日 21:41
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C++】两个栈实现一个队列
举报原因:
原因补充:

(最多只允许输入30个字)