Класс Java Stack расширяет класс Vector. Он позволяет создавать новые элементы, просматривать элемент в стеке, обновлять элемент в стеке и удалять все элементы из стека. Складывает данные обработки в порядке поступления (FILO). Это означает, что вы можете добавлять или удалять элементы только из вершины стека.

Структура данных стека имеет пять основных методов. Однако класс Java Stack также имеет доступ к более чем 40 другим методам, которые он наследует от класса Vector.

Создание стека в Java

Класс стека имеет один конструктор что позволяет создать пустой стек. Каждый стек имеет аргумент типа, который определяет тип данных, которые он будет хранить.

импорт java.util. Куча;

публичныйучебный классГлавный{
публичныйстатическийпустотаглавный(строка [] аргументы){
// создаем стек
Куча Клиенты = новый Куча();
}
}

Приведенный выше код создает структуру данных стека с именем Клиенты который хранит строковые значения.

Заполнение стека

Одним из пяти основных методов класса Stack является толкать() метод. Он берет один элемент с тем же типом данных, что и стек, и помещает этот элемент на вершину стека.

instagram viewer

// заполняем стек
Customers.push("Джейн Доу");
Customers.push("Джон Доу");
Customers.push("Патрик Уильямс");
Customers.push("Пол Смит");
Customers.push("Эрик Роу");
Customers.push("Элла Джонс");
Customers.push("Джессика Браун");

Приведенный выше код заполняет стек клиентов семью элементами. Он помещает каждый новый элемент на вершину стека. Итак, пункт на вершине стопки клиентов — Джессика Браун. И вы можете подтвердить это, используя Stack заглянуть() метод. заглянуть() метод не принимает аргументов. Он возвращает объект на вершину стека, не удаляя его.

// просмотреть объект на вершине стека
System.out.println(Customers.peek());

Приведенный выше код возвращает в консоль следующий вывод:

Джессика Браун

Просмотр элементов в стопке

Структура данных стека довольно ограничена в том, как она позволяет вам взаимодействовать с ее данными. Вы должны в основном использовать стек через его самый верхний элемент. Однако вы также можете использовать методы, унаследованные от класса Vector, для доступа к произвольным элементам. К таким методам относятся elementAt и removeElementAt.

Самый простой способ получить представление о содержимом стека — просто распечатать его. Передайте объект стека в System.out.println и метод стека toString() выдаст хорошее резюме:

// просмотреть все элементы стека
System.out.println (Клиенты);

Приведенный выше код выводит на консоль следующий вывод:

[Джейн Доу, Джон Доу, Патрик Уильямс, Пол Смит, Эрик Роу, Элла Джонс, Джессика Браун]

Поиск позиции элемента в стеке

Если вы знаете элемент в стеке, вы можете определить его индексную позицию или позицию относительно вершины стека. индекс чего-либо() Метод берет элемент в стеке и возвращает его индексную позицию. Помните, что стек начинает индексировать свои элементы с нуля.

// найти позицию индекса элемента
System.out.println(Customers.indexOf("Джейн Доу"));

Приведенный выше код выводит на консоль следующий вывод:

0

поиск() метод является одним из основных методов класса Stack. Он возвращает позицию элемента относительно вершины стека, где элемент на вершине стека имеет позицию номер один.

System.out.println(Customers.search("Джейн Доу"));

Приведенный выше код выводит на консоль следующий вывод:

7

Если вы поставляете поиск() или индекс чего-либо() методы с элементом, которого нет в стеке, они вернут отрицательное значение.

System.out.println(Customers.search("Эльза Доу"));
System.out.println(Customers.indexOf("Эльза Доу"));

Приведенный выше код выводит на консоль следующий вывод:

-1
-1

Обновление элементов в стеке

Вы можете манипулировать только элементом наверху стека. Таким образом, если вы хотите обновить элемент, который не находится в верхней части стека, вам придется извлечь все элементы над ним. поп() метод является одним из основных методов стека. поп() метод не принимает аргументов. Он удаляет элемент с вершины стека и возвращает его.

// обновить объект
Клиенты.pop();
Клиенты.pop();
Customers.push("Элла Джеймс");
Customers.push("Джессика Браун");
System.out.println (Клиенты);

Приведенный выше код выводит на консоль следующий вывод:

[Джейн Доу, Джон Доу, Патрик Уильямс, Пол Смит, Эрик Роу, Элла Джеймс, Джессика Браун]

Как видно из вывода, код заменяет фамилию Эллы на Джеймс. Он включает в себя процесс, который извлекает элементы из стека до тех пор, пока вы не достигнете целевого объекта. Затем он извлекает целевой объект; обновляет его; и помещает его вместе с элементами, которые были поверх целевого элемента, обратно в стек. Вам придется использовать программу, которая выполняет операции, подобные приведенной выше, каждый раз, когда вы хотите обновить элемент в своем стеке.

Удаление элемента из стека

Чтобы удалить один элемент из структуры данных Stack, вы снова можете использовать метод pop(). Если элемент, который вы хотите удалить, не находится вверху, вы можете перемещать элементы вверху, пока не дойдете до нужного.

Удаление всех элементов в стопке

Чтобы удалить все элементы из стека, вы можете использовать Java-цикл во время выполнения с помощью метода pop() для удаления элементов по одному. Однако более эффективным подходом является использование Чисто() метод. Чисто() метод — это метод, который класс Stack наследует от класса Vector. Он не принимает аргументов, ничего не возвращает, а просто удаляет все элементы в структуре данных Stack.

// удаляем все элементы в стеке
Клиенты.очистить();
System.out.println(Customers.empty());

Приведенный выше код удаляет все элементы из стека клиентов. Затем он использует пустой() способ проверить, пуст ли стек. пустой() — еще один основной метод класса Java Stack. Он не принимает аргументов и возвращает логическое значение. Этот метод возвращает true, если стек пуст, и false в противном случае.

Приведенный выше код выводит на консоль следующий вывод:

истинный

Практические приложения для структуры данных стека

Структура данных стека очень ограничена. Он не обеспечивает такой гибкости в обработке данных, как другие структуры данных. Возникает вопрос: когда следует использовать структуру данных Stack?

Структура данных Stack идеально подходит для приложений, требующих обработки данных в обратном порядке. Это включает:

  • Приложение, которое проверяет, является ли слово палиндромом.
  • Приложение, которое преобразует десятичные числа в двоичные числа.
  • Приложения, которые позволяют пользователям отменить.
  • Игры, которые позволяют пользователю вернуться к предыдущим ходам, например, игра в шахматы.