我们都知道栈的特点是元素先进后出,队列的特点是元素先进先出。那如何用栈实现队列和用队列实现栈呢。
用栈实现队列
我们需要两个栈,一个数据栈,一个辅助栈。数据栈用来存放数据,辅助栈用来辅助实现模拟队列的操作。
当几个元素入栈,而现在想以队列的方式取数据,即取最先入栈的、现在在栈底的元素。这时辅助栈就派上用场了,首先我们将栈底元素上面的元素全部pop(),接着把它们push()进辅助栈。这时数据栈内只剩栈底元素,取出即为我们想要的,之后再把辅助栈中的元素重新pop()出并push()进数据栈即可。
用队列实现栈
同样的,我们需要两个队列,一个数据队列,一个辅助队列。数据队列负责存放元素,辅助队列用来辅助实现模拟栈的操作。
栈的特点是先进后出,因此应该让位于队列末尾的元素出队,但队列是先进先出的,所以必须把队列末尾元素前边的元素全部出队后,才能得到末尾元素。我们可以用辅助队列存放出队列的元素,在记录最后出队列的元素后,把辅助队列中的元素重新入数据队列即可。