题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
<分析>:
入队:将元素进栈A
出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈;
如果不为空,栈B直接出栈。
#include<iostream>
using namespace std;
#include<stack>
class Solution
{
public:
void Push(int node)
{
stack1.push(node);
}
int Pop()
{
if(stack2.empty())
{
while(!stack1.empty())//这里要注意,要一次性的把stack1中的元素都导入到stack2中,要不然元素的相对应位置就会发生变化。
{
int temp = stack1.top();
stack2.push(temp);
stack1.pop();
}
}
int temp = stack2.top();
stack2.pop();
return temp;
}
private:
stack<int> stack1; //这个栈用来保存元素
stack<int> stack2;//这个栈用来弹出元素
};
void test()
{
Solution s;
s.Push(0);
s.Push(1);
s.Push(3);
s.Push(7);
s.Push(8);
cout << s.Pop()<<endl;;
}
int main()
{
test();
cout << "hello..."<<endl;
return 0;
}