【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要出栈。但是...
  • djb100316878
  • djb100316878
  • 2014年12月09日 10:48
  • 9880

C++两个栈实现一个队列和两个队列实现一个栈

今天用C++实现了下两个栈模拟一个队列和两个队列模拟一个栈!代码可能有很多漏洞,如果读者发现问题, 可以及时反馈,非常感谢!!!         代码如下: #include #include...
  • qianghaohao
  • qianghaohao
  • 2016年05月04日 22:11
  • 884

【C++面试题】利用两个栈实现1个队列

1、题目   利用两个栈实现一个队列    2、要求   只能使用栈的pop(),top()和push(),以及测试栈是否为空empty()四个操作. 来实现队列的empty(), ...
  • liulongling
  • liulongling
  • 2016年02月19日 11:03
  • 1923

两个栈来实现一个队列的C++代码(某公司社会早笔试题)

利用两个栈来实现一个队列, 这个问题很常见。  最关键的是要有好的思路, 至于实现, 那是很简单的事情了。 在本文中, 也想说说自己的思路, 但是, 我觉得用代码来表述思路更符合我的习惯, 也是我的菜...
  • stpeace
  • stpeace
  • 2015年07月05日 23:35
  • 3610

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

//两个队列实现一个栈的思想:用_PushQ1队列作为push数据的队列,用_TmpQ2队列暂存数据 // //1.只要是对栈进行push操作,就将数据push入_PushQ1队列中。 //2.要实现...
  • ZDF0414
  • ZDF0414
  • 2015年11月19日 20:49
  • 340

剑指offer《面试题7:用两个栈实现队列》及用两个队列实现一个栈

栈和队列是两个特点相反的数据结构,但联系非常密切。 栈的特点就是“后进先去”,即是最后被压入(push)的栈元素会被第一个弹出(pop)。 队列的特点就是“先进先出”,即是第一个进...
  • SingleLegCat
  • SingleLegCat
  • 2015年07月15日 00:40
  • 1374

两个栈实现队列+两个队列实现栈----java

两个栈实现队列+两个队列实现栈----java 一.两个栈实现一个队列 思路:所有元素进stack1,然后全部出stack1并进入stack2.实现队列的先进先出即:若stack2非空,我们需要的恰好...
  • u010093630
  • u010093630
  • 2014年08月08日 00:52
  • 10044

Python :用两个栈实现队列

牛客网上的剑指 offer的在线编程: 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 # -*- coding:utf-8 -*- class...
  • Lynette_bb
  • Lynette_bb
  • 2017年07月13日 21:17
  • 724

剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。 我们通过一个具体的例子来分析该队列插...
  • jsqfengbao
  • jsqfengbao
  • 2015年07月27日 19:25
  • 2531

两个栈实现一个队列,两个队列实现一个栈

问题1:用两个栈实现一个队列,实现队列的push和delete操作 栈的特性是先进后出(FILO),队列的特性是先进先出(FIFO),在实现delete时,我们的难点是如何将栈中最底层的数据拿出来,...
  • zw_1510
  • zw_1510
  • 2016年07月17日 00:32
  • 4090
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C++】两个栈实现一个队列
举报原因:
原因补充:

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