原题
题目分析
用栈实现队列。
实现代码
public class MyQueue
{
Stack<int> _s1;//维护新来的元素
Stack<int> _s2;//维护最先进来的
/** Initialize your data structure here. */
public MyQueue()
{
_s1 = new Stack<int>();
_s2 = new Stack<int>();
}
/** Push element x to the back of queue. */
public void Push(int x)
{
_s1.Push(x);
}
/** Removes the element from in front of queue and returns that element. */
public int Pop()
{
int size = _s1.Count;
if (_s2.Count == 0)
{
while (size-- > 0)
_s2.Push(_s1.Pop());
}
return _s2.Pop();
}
/** Get the front element. */
public int Peek()
{
int size = _s1.Count;
if (_s2.Count == 0)
{
while (size-- > 0)
_s2.Push(_s1.Pop());
}
return _s2.Peek();
}
/** Returns whether the queue is empty. */
public bool Empty()
{
return _s1.Count == 0 && _s2.Count == 0;
}