题目描述
使用栈实现队列的下列操作:
push(x) -- 将一个元素放入队列的尾部。
pop() -- 从队列首部移除元素。
peek() -- 返回队列首部的元素。
empty() -- 返回队列是否为空。
栈:先进后出;
队列:先进先出;
思路:
1.使用两个栈stack 、queue ;
2.将数据push到stack中;
3.queue 进行出队,则是stack中出栈,如果queue无数据则stack就行出栈,如果queue 有数据就进行出栈;
Stack<int> stack = new Stack<int>();
Stack<int> queue = new Stack<int>();
public MyQueue()
{
}
public void Push(int x)
{
stack.push(x);
}
public int Pop()
{
if (queue.isEmpty())
{
while (stack.top != null)
{
queue.push(stack.peek());
stack.pop();
}
}
int topV = queue.peek();
queue.pop();
return topV;
}
/** Get the front element. */
public int Peek()
{
if (queue.isEmpty())
{
while (stack.top != null)
{
queue.push(stack.peek());
stack.pop();
}
}
return queue.peek();
}
/** Returns whether the queue is empty. */
public bool Empty()
{
if (queue.isEmpty())
{
while (stack.top != null)
{
queue.push(stack.peek());
stack.pop();
}
}
if (queue.top == null) return false;
return true;
}
网友评论