跟我一起學算法系列7---用兩個棧實現佇列
阿新 • • 發佈:2018-11-27
1.題目描述
用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。
2.演算法分析
首先我們需要弄清楚兩個概念,棧是先進後出,佇列是先進先出。概率有了,那麼仔細一分析發現棧和佇列剛好相反,那麼我們就可以在入棧的時候,我們將它全放進棧1中,當需要出棧的時候,我們將棧1的資料出棧,並放到棧2中,然後再將棧2依次出棧。
因此,入棧的時候,只需要使用pop方式入棧到棧1。出棧的時候,我們isEmpty方法將棧1的資料push到棧2,然後將棧2的資料pop即可。
3.程式碼例項
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
//直接入棧
stack1.push(new Integer(node));
}
public int pop() {
if(stack2.isEmpty()){
while(!stack1.isEmpty()){
//將棧1的資料壓入棧2
stack2.push(stack1.pop());
}
}
//棧2出棧
return stack2.pop().intValue();
}
}