思路:我们知道栈的拿取方式是先进者后出,后进者先出,然而队列是先进先出,所以我们可以使用两个栈来实现
用一张图来表达:
因为栈取元素是取后进的先出,所以我们就像图片一样先一个一个把元素从顶部取出来然后存放到S2这个容器中,然后再取S2容器中的顶部元素,现在是不是咱们的元素就倒转了,相当于就取到了,最先进入的那个元素了呢!也就是先进先出了。但是S2这个栈在这里的作用仅仅是作为辅助而已,所以我们需要把取到的S2顶部元素先保存,然后再把S2剩下的元素再返回进S1容器之中。
方法解释:
push(x) – 将一个元素放入队列的尾部。
pop() – 从队列首部移除元素。
peek() – 返回队列首部的元素。
empty() – 返回队列是否为空。
这里是用的泛型,不多说了,直接上代码。
效果:
有关于用两个栈来实现队列的Java代码就在这里结束了,希望对大家有所帮助。