隊列是先進先出,而棧是先進後出;
考慮到我們取棧頂元素的便利性,我們在實作時使得棧頂等于隊列頭;
由于往棧中添加元素相當于往隊列頭添加元素,是以我們需要在兩個隊列中進行元素的轉移,比較簡單的實作是:
1.q1和q2在任一時刻至少有一個為空,即如果有元素,是以元素隻在同一個隊列中。
2.當有元素需要插入時,将插入的元素插入到空的隊列中,并将另一非空隊列的元素轉移到該隊列中,于是插入的元素添加到了隊列頭中。
import java.util.Stack;
public class 兩個棧實作一個隊列 {
Stack stack1 = new Stack();
Stack stack2 = new Stack();
public void push(int num){
stack1.push(num);
}
public int pop(){
if(stack2.empty()){
while(!stack1.empty()){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}