Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java 程序实现堆栈(Stack)数据结构

    Java 实例大全

在这个实例中,我们将学习用Java实现堆栈数据结构。

要了解此示例,请确保您首先访问以下教程,

示例1:实现堆栈的Java程序

// Stack implementation in Java

class Stack {

  //存储堆栈元素
  private int arr[];
  //表示堆栈的顶部
  private int top;
  //堆栈的总容量
  private int capacity;

  //创建堆栈
  Stack(int size) {
    // 初始化数组
    // 初始化堆栈变量
    arr = new int[size];
    capacity = size;
    top = -1;
  }

  // 将元素推送到堆栈顶部
  public void push(int x) {
    if (isFull()) {
      System.out.println("Stack OverFlow");

      // 终止程序
      System.exit(1);
    }

    //在堆栈顶部插入元素
    System.out.println("插入 " + x);
    arr[++top] = x;
  }

  //从堆栈顶部弹出元素
  public int pop() {

    //如果堆栈为空
    //没有要弹出的元素
    if (isEmpty()) {
      System.out.println("STACK EMPTY");
      //终止程序
      System.exit(1);
    }

    //从堆栈顶部弹出元素
    return arr[top--];
  }

  //返回堆栈的大小
  public int getSize() {
    return top + 1;
  }

  // 检查堆栈是否为空
  public Boolean isEmpty() {
    return top == -1;
  }

  // 检查堆栈是否已满
  public Boolean isFull() {
    return top == capacity - 1;
  }

  // 显示堆栈的元素
  public void printStack() {
    for (int i = 0; i <= top; i++) {
      System.out.print(arr[i] + ", ");
    }
  }

  public static void main(String[] args) {
    Stack stack = new Stack(5);

    stack.push(1);
    stack.push(2);
    stack.push(3);

    System.out.print("堆栈: ");
    stack.printStack();

    //从堆栈中删除元素
    stack.pop();
    System.out.println("\n在弹出之后");
    stack.printStack();

  }
}

输出结果

插入 1
插入 2
插入 3
堆栈: 1, 2, 3,  
在弹出之后
1, 2,

在上面的示例中,我们已经用Java实现了堆栈数据结构。

示例2:使用Stack类实现堆栈

Java提供了一个可用于实现堆栈的内置类 Stack。

import java.util.Stack;

class Main {
  public static void main(String[] args) {

    //创建一个Stack类的对象
    Stack<String> animals= new Stack<>();

    //将元素推入堆栈顶部
    animals.push("Dog");
    animals.push("Horse");
    animals.push("Cat");
    System.out.println("Stack: " + animals);

    //从堆栈顶部弹出元素
    animals.pop();
    System.out.println("弹出后 Stack: " + animals);
    }
}

输出结果

Stack: [Dog, Horse, Cat]
弹出后 Stack: [Dog, Horse]

在上面的示例中,我们使用了Java的Stack类以实现堆栈。这里,

  • animals.push() - 将元素插入堆栈顶部

  • animals.pop() - 从堆栈顶部删除元素

注意,我们<String>在创建堆栈时使用了尖括号。它表示堆栈是泛型类型。要了解有关泛型的更多信息,请访问Java 泛型

Java 实例大全