题目
思路
解法一
我们都知道队列是一种先进先出的结构,而栈是一种先进后出的结构。因此只需要将一个栈中的元素倒入另一个栈,就可以实现元素的逆序排列,进而实现类似队列的先进先出效果。
下面通过一个例子说明:
代码很简单:
public class CQueue
{
private readonly Stack<int> _inStack, _outStack;
public CQueue()
{
_inStack = new();
_outStack = new();
}
public void AppendTail(int value) {
// 新元素直接压入输入栈
_inStack.Push(value);
}
public int DeleteHead()
{
if (_outStack.Count == 0)
{
// 两个栈都没有元素,直接返回-1
if (_inStack.Count == 0)
{
return -1;
}
// 把输入栈的元素挪入输出栈
while (_inStack.Count > 0)
{
_outStack.Push(_inStack.Pop());
}
}
return _outStack.Pop();
}
}