1. 程式人生 > >如何用2個佇列實現一個棧--Java

如何用2個佇列實現一個棧--Java

假設連個佇列q1,q2,一個做入佇列,一個做出佇列。q1提供入棧,w2tigong彈棧。

入棧時,只需入佇列q1即可。

彈棧時,需考慮兩種情況。

  1. q1 只有一個元素,出隊即可。

  2. q1 不只一個元素,此時彈棧的資料應該為位於隊尾的元素,也就是最後進入的元素。我們需要把q1 元素依次出隊,儲存到q2中,其中q1 的最後一個元素不入q2,直接輸出。然後將佇列q2 的元素再入隊q1.

import java.util.LinkedList;
public class myStack2 {
LinkedList q1=new LinkedList();//入棧
LinkedList q2=new LinkedList();//出棧
//isEmpty()
public boolean isEmpty() {
return q1.isEmpty()&&q2.isEmpty();
}
//push()
public synchronized void push(E data) {
q1.add(data);
}
//pop()
public synchronized E pop() {
if(q1.size()==1) {
return q1.poll();
}else {
while(q1.size()!=1) {
q2.add(q1.poll());
}
E tem= q1.poll();
while(!q2.isEmpty()) {
q1.add(q2.poll());
}
return tem;
}

}

}