English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Учебник по основам 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

Реализация структуры данных стек (Stack) в Java

    Java полные примеры

В этом примере мы изучим реализацию структуры данных стек на Java.

Чтобы понять этот пример, убедитесь, что вы сначала посетили следующие руководства:

Пример 1: Реализация программы стека на Java

// Stack 实现于 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 полные примеры