在 Java 中,棧和隊(duì)列是兩種重要的數(shù)據(jù)結(jié)構(gòu),它們?cè)跇?gòu)建程序邏輯時(shí)起著關(guān)鍵作用。以下是對(duì)這兩種數(shù)據(jù)結(jié)構(gòu)的詳細(xì)介紹及其代碼實(shí)現(xiàn):
### 棧 (Stack)
棧是一種后進(jìn)先出(LIFO, Last In First Out)的數(shù)據(jù)結(jié)構(gòu)。元素只能從棧頂插入和刪除。
#### 常用操作
- `push`:將元素壓入棧頂。
- `pop`:從棧頂彈出元素。
- `peek`:查看棧頂元素但不彈出。
#### 示例代碼
```java
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println("Stack: " + stack);
System.out.println("Popped element: " + stack.pop());
System.out.println("Top element: " + stack.peek());
}
}
```
### 隊(duì)列 (Queue)
隊(duì)列是一種先進(jìn)先出(FIFO, First In First Out)的數(shù)據(jù)結(jié)構(gòu)。元素只能從隊(duì)尾插入,從隊(duì)首刪除。
#### 常用操作
- `offer`:將元素插入隊(duì)尾。
- `poll`:從隊(duì)首刪除元素。
- `peek`:查看隊(duì)首元素但不刪除。
#### 示例代碼
```java
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
System.out.println("Queue: " + queue);
System.out.println("Polled element: " + queue.poll());
System.out.println("Front element: " + queue.peek());
}
}
```
### 總結(jié)
- **棧**:后進(jìn)先出,適用于函數(shù)調(diào)用管理、表達(dá)式求值和括號(hào)匹配等場(chǎng)景。
- **隊(duì)列**:先進(jìn)先出,適用于任務(wù)調(diào)度、廣度優(yōu)先搜索和緩沖區(qū)管理等場(chǎng)景。
希望這些信息對(duì)你有幫助!如果你有其他問(wèn)題或需要進(jìn)一步的解釋?zhuān)?qǐng)隨時(shí)告訴我。[1][2]