//两个栈实现一个队列的思想:
//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++】两个栈实现一个队列
最新推荐文章于 2021-11-18 16:43:30 发布