在 Java 中,栈和队列是两种重要的数据结构,它们在构建程序逻辑时起着关键作用。以下是对这两种数据结构的详细介绍及其代码实现:
### 栈 (Stack)
栈是一种后进先出(LIFO, Last In First Out)的数据结构。元素只能从栈顶插入和删除。
#### 常用操作
- `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());
}
}
```
### 队列 (Queue)
队列是一种先进先出(FIFO, First In First Out)的数据结构。元素只能从队尾插入,从队首删除。
#### 常用操作
- `offer`:将元素插入队尾。
- `poll`:从队首删除元素。
- `peek`:查看队首元素但不删除。
#### 示例代码
```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());
}
}
```
### 总结
- **栈**:后进先出,适用于函数调用管理、表达式求值和括号匹配等场景。
- **队列**:先进先出,适用于任务调度、广度优先搜索和缓冲区管理等场景。
希望这些信息对你有帮助!如果你有其他问题或需要进一步的解释,请随时告诉我。[1][2]