當我使用堆棧實現隊列時,遇到了一個奇怪的問題。任何人都可以給我一個想法嗎? 當我這樣寫代碼時,這是錯誤的。因爲如果我創建myQueue中的一個對象,然後推(1)推(2)彈出,它會返回1。然而它應該是2.使用堆棧實現隊列時出錯(JAVA)
class MyQueue {
Stack<Integer> s1=new Stack<Integer>();
Stack<Integer> s2=new Stack<Integer>();
// Push element x to the back of queue.
public void push(int x) {
s1.push(x);
}
// Removes the element from in front of queue.
public void pop() {
if(s2.size()!=0)
s2.pop();
else{
for(int i = 0; i<s1.size(); i++){
s2.push(s1.pop());
}
s2.pop();
}
}
}
但是,如果我修改像下面的代碼,它是正確的,但我找不到這兩個類之間的區別。
class MyQueue {
Stack<Integer> s1=new Stack<Integer>();
Stack<Integer> s2=new Stack<Integer>();
// Push element x to the back of queue.
public void push(int x) {
s1.push(x);
}
// Removes the element from in front of queue.
public void pop() {
if(!s2.empty())
s2.pop();
else{
while(!s1.empty())
s2.push(s1.pop());
s2.pop();
}
}
}
非常感謝!