1.用兩個棧實現隊列
【題目】
用兩個棧來實現一個隊列,完成隊列的 Push 和 Pop 操作。 隊列中的元素爲 int 類型。
【代碼】
package swear2offer.construction;
import java.util.Stack;
public class StackToQueue {
/**
* 用兩個棧來實現一個隊列,完成隊列的 Push 和 Pop 操作。 隊列中的元素爲 int 類型。
*
* 棧的結構是先進後出,隊列的結構是先進先出
*
* */
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.add(node);
}
public int pop() {
if (stack2.empty()) {
while (!stack1.empty()) {
stack2.add(stack1.pop());
}
}
return stack2.pop();
}
}
【思路】
兩個棧stack1和stack2,模擬隊列的能力,插入元素直接插入stack1即可,因爲存儲元素只要保證保存下來,二者的區別關鍵是彈出元素的順序,隊列彈出的元素位於stack的最下面,所以需要把stack1的元素依次彈出,並放入stack2中,這樣彈出元素的時候,只要stack2不爲空,就彈出stack2的元素,stack2爲空的時候,先把stack1的元素壓入stack2,然後繼續彈出stack2.