题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路解析:队列的性质是先进先出,栈的性质是先进后出,用两个栈模拟一个队列进出顺序,直接先将元素放入到栈1中,先进入的元素被存放在栈底了,所以对栈1中元素全部出栈入栈2,即可使栈1栈底元素位位于栈2的栈顶。
- 入队列:直接入栈1
- 出队列:为了保证先进先出,若栈2中有数据,直接出栈,否则,将栈1中的全部数据出栈压入到栈2中,然后再从栈2中出栈。
class Solution
{
//定义两个栈
private Stack<int> stack1=new Stack<int>();
private Stack<int> stack2=new Stack<int>();
public void push(int node)
{
//直接从将元素压入栈1
stack1.Push(node);
}
public int pop()
{
int e = 0;
//栈2为空,将栈1元素全部压入栈2
//栈2不为空,直接从栈2中取元素
if (stack2.Count==0)
{
while (stack1.Count!=0)
{
e = stack1.Peek();
stack2.Push(e);
stack1.Pop();
}
}
e = stack2.Peek();
stack2.Pop();
return e;
}
}