当前位置:首页 > Java

java 如何建栈

2026-03-20 18:18:29Java

使用数组实现栈

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

java 如何建栈

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;
    }
}

使用链表实现栈

链表实现的栈更加灵活,不需要预先指定大小。通过链表的头部操作(插入和删除)来模拟栈的pushpop操作。

java 如何建栈

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)通常是性能最优的选择,推荐在实际开发中使用。

标签: java何建
分享给朋友:

相关文章

java如何运行

java如何运行

运行Java程序的基本方法 Java程序的运行需要经过编写、编译和执行三个主要阶段。以下是具体步骤: 编写Java源代码 创建一个以.java为后缀的文件,例如HelloWorld.java。文件内…

java如何创建类

java如何创建类

创建类的基本语法 在Java中,类通过class关键字定义,语法如下: [访问修饰符] class 类名 { // 成员变量(属性) // 构造方法 // 成员方法 }…

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常用…

如何编写java

如何编写java

编写Java程序的基本步骤 安装Java开发工具包(JDK),确保系统环境变量配置正确。可以从Oracle官网下载最新版本的JDK并进行安装。 选择一个合适的集成开发环境(IDE),如Eclipse…

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Syste…

java如何返回数组

java如何返回数组

返回数组的方法 在Java中,可以通过多种方式返回数组。以下是几种常见的方法: 直接返回数组 定义一个方法,返回类型为数组类型,直接在方法内部创建并返回数组。 public int[] getI…