【劍指Offer】9.用兩個棧實現佇列
阿新 • • 發佈:2018-11-27
我們都知道棧是先進後出的,佇列是先進先出的,現在要用兩個棧去實現一個佇列。
解題思路:兩個棧分別為A、B,首先將元素全部入棧到A中,然後在將A棧中元素全部出棧,將出棧元素進入B棧中。
比如元素a、b、c進A棧,然後出棧進入到B棧中。
此時若B棧內元素出棧,可以看出其出棧順序為a、b、c即為最開始的進棧順序,即實現了先進先出。
以下是程式碼具體是實現
import java.util.Stack; public class Solution { Stack<Integer> stackA = new Stack<Integer>(); Stack<Integer> stackB = new Stack<Integer>(); public void push(int node) { //當棧B不為空時,需要先把棧B裡元素出棧進入到A中 while(!stackB.isEmpty()) { stackA.push(stackB.pop()); } stackA.push(node); //此處即為上圖A出棧進入B while(!stackA.isEmpty()) { stackB.push(stackA.pop()); } } public int pop() { return stackB.pop(); } }