共計 1277 個字符,預計需要花費 4 分鐘才能閱讀完成。
使用 Java 的棧來實現隊列可以通過兩個棧來實現。一個棧用來存儲隊列的元素,另一個棧用來輔助操作。
具體實現步驟如下:
- 創建兩個棧,一個用于存儲隊列的元素,命名為
stack1
,另一個用于輔助操作,命名為stack2
。 - 實現隊列的入隊操作
enqueue
,即將元素添加到stack1
中。 - 實現隊列的出隊操作
dequeue
,首先判斷stack2
是否為空,若為空,則將stack1
中的元素依次彈出并壓入stack2
中,然后從stack2
中彈出棧頂元素作為出隊元素;若stack2
不為空,則直接從stack2
中彈出棧頂元素作為出隊元素。 - 實現隊列的獲取隊首元素操作
peek
,同樣需要先判斷stack2
是否為空,若為空,則將stack1
中的元素依次彈出并壓入stack2
中,然后獲取stack2
的棧頂元素作為隊首元素;若stack2
不為空,則直接獲取stack2
的棧頂元素作為隊首元素。 - 實現隊列的判空操作
isEmpty
,判斷stack1
和stack2
是否都為空,若是,則隊列為空;否則,隊列不為空。
下面是 Java 代碼的實現:
import java.util.Stack;
public class QueueWithStacks {private Stack<Integer> stack1;
private Stack<Integer> stack2;
public QueueWithStacks() {stack1 = new Stack<>();
stack2 = new Stack<>();}
public void enqueue(int element) {stack1.push(element);
}
public int dequeue() {if (stack2.isEmpty()) {while (!stack1.isEmpty()) {stack2.push(stack1.pop());
}
}
return stack2.pop();}
public int peek() {if (stack2.isEmpty()) {while (!stack1.isEmpty()) {stack2.push(stack1.pop());
}
}
return stack2.peek();}
public boolean isEmpty() {return stack1.isEmpty() && stack2.isEmpty();
}
}
使用示例:
public class Main {public static void main(String[] args) {QueueWithStacks queue = new QueueWithStacks();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
System.out.println(queue.dequeue()); // 輸出: 1
System.out.println(queue.peek()); // 輸出: 2
System.out.println(queue.isEmpty()); // 輸出: false
}
}
以上就是使用 Java 的棧實現隊列的方法。
丸趣 TV 網 – 提供最優質的資源集合!
正文完