-1
我需要遍歷堆棧直到它爲空,並將每個元素添加到隊列中。然後做相反的事情。遍歷隊列中,直到它是空的,將每個元素返回到堆棧僅在Java中使用隊列來反轉堆棧?
public class Q1 {
public static void reverseStack(Stack st){
}
}
這裏是我的測試:
public class Q1Test {
@Test
public void testQ1() {
Stack st = new Stack(5);
st.push("A");
st.push("B");
Q1.reverseStack(st);
assertEquals("A",(String) st.top());
}
}
我一直在努力做的Q1代碼,從來沒有得到它的成功並總是最終失敗。任何人都可以實施上述的方法來使Q1測試成功嗎?
「從來沒有得到它的成功,並最終總是失敗」 - 你的方法是空的。看起來不像你嘗試過任何東西。你會得到什麼結果? – duffymo
public static void reverseStack(Stack st){if(!st.isEmpty()){ Object curr = st.pop(); reverseStack(st); st.push(curr); –
啊,遞歸嘗試。不過,在我看來,這將導致與以前相同的順序。如果你的籌碼堆頂部有B,那麼你將B拿出來,倒轉它下面的東西,然後再把B放回頂部。 –