1. 程式人生 > >【劍指Offer】9.用兩個棧實現佇列

【劍指Offer】9.用兩個棧實現佇列

我們都知道棧是先進後出的,佇列是先進先出的,現在要用兩個棧去實現一個佇列。

解題思路:兩個棧分別為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();
    }
}