java 如何建栈
使用数组实现栈
在Java中,可以通过数组来实现栈的基本功能。定义一个固定大小的数组,并维护一个指针(通常称为top)来跟踪栈顶元素的位置。

public class ArrayStack {
private int maxSize;
private int[] stackArray;
private int top;
public ArrayStack(int size) {
this.maxSize = size;
this.stackArray = new int[maxSize];
this.top = -1;
}
public void push(int value) {
if (isFull()) {
throw new IllegalStateException("Stack is full");
}
stackArray[++top] = value;
}
public int pop() {
if (isEmpty()) {
throw new IllegalStateException("Stack is empty");
}
return stackArray[top--];
}
public int peek() {
if (isEmpty()) {
throw new IllegalStateException("Stack is empty");
}
return stackArray[top];
}
public boolean isEmpty() {
return top == -1;
}
public boolean isFull() {
return top == maxSize - 1;
}
}
使用链表实现栈
链表实现的栈更加灵活,不需要预先指定大小。通过链表的头部操作(插入和删除)来模拟栈的push和pop操作。

public class LinkedStack {
private static class Node {
int data;
Node next;
Node(int data) {
this.data = data;
}
}
private Node top;
public void push(int value) {
Node newNode = new Node(value);
newNode.next = top;
top = newNode;
}
public int pop() {
if (isEmpty()) {
throw new IllegalStateException("Stack is empty");
}
int value = top.data;
top = top.next;
return value;
}
public int peek() {
if (isEmpty()) {
throw new IllegalStateException("Stack is empty");
}
return top.data;
}
public boolean isEmpty() {
return top == null;
}
}
使用Java集合框架
Java的java.util.Stack类提供了栈的实现,但更推荐使用Deque接口(如ArrayDeque),因为它是现代Java中更高效的选择。
import java.util.ArrayDeque;
import java.util.Deque;
public class StackExample {
public static void main(String[] args) {
Deque<Integer> stack = new ArrayDeque<>();
stack.push(10); // 压栈
stack.push(20);
System.out.println(stack.pop()); // 弹栈
System.out.println(stack.peek()); // 查看栈顶
}
}
注意事项
- 数组实现的栈需要预先指定大小,可能不适合动态需求。
- 链表实现的栈无需固定大小,但每次操作需要额外的内存开销。
Deque接口的实现(如ArrayDeque)通常是性能最优的选择,推荐在实际开发中使用。






