所以我試圖用一個隊列實現一個堆棧,它看起來可以工作,但我不確定它是否有問題,因爲我在網上看到的大多數解決方案都使用兩個隊列。任何人都可以告訴我,如果我的執行有問題嗎?Java:用一個隊列實現堆棧,有什麼問題?
public class MyStack<T> {
/**
* @param args
*/
private Queue<T> q = new LinkedList<T>();
public MyStack(){
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MyStack<String> s = new MyStack<String>();
s.push("1");
s.push("2");
s.push("3");
s.push("4");
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
public void push(T s){
q.offer(s);
}
public T pop(){
int n = q.size();
for(int i = 0; i < n-1; i++){
q.offer(q.poll());
}
return q.poll();
}
}
輸出:
空
如果你想代碼審查這不是網站,你有一個意想不到的行爲? – nachokk
沒有意外的行爲。我只是想知道爲什麼大多數在線解決方案使用兩個隊列時,似乎工作得很好。 – user2017502
從來沒有見過用2個隊列實現的堆棧,你見過的解決方案是什麼?此外,爲什麼'Queue'因爲是FIFO而Stack是LIFO。 – zapl