Логотип YeaHub

Реализация стека на массиве (Array-Based Stack)

2

GoJavaJavaScriptPython

Массивы

Стек

Сбер

Условие:

Реализуйте класс Stack, работающий на основе массива фиксированного размера с автоматическим увеличением при заполнении.

Класс должен поддерживать:

  • Инициализацию с заданной начальной ёмкостью (capacity)

  • push(value) — добавление элемента в стек. Если внутренний массив заполнен, его размер увеличивается вдвое перед вставкой.

  • peek() — возвращает последний добавленный элемент без удаления. Если стек пуст — возвращает null.

  • pop() — возвращает последний добавленный элемент и удаляет его из стека (уменьшает логический размер). Если стек пуст — возвращает null.

  • isEmpty() — возвращает true, если элементов в стеке нет, иначе false.

  • size() — возвращает текущее количество элементов в стеке.

Поскольку это структура данных с состоянием, тестироваться будет через последовательность операций: на входе — массив операций (push/pop/peek/isEmpty/size с аргументами при необходимости), на выходе — массив результатов каждой операции (для push результатом считается null).

Входные данные:

  • capacity — начальная ёмкость (целое положительное число)

  • operations — массив объектов { op: string, value?: number }, где op — одна из "push", "pop", "peek", "isEmpty", "size"

Выходные данные:
Массив результатов выполнения каждой операции по порядку.

Ограничения:

  • 1 <= capacity <= 100

  • 0 <= operations.length <= 1000

  • Значения value — целые числа

Пример:

Вход:
capacity = 2
operations = [
  { op: "push", value: 1 },
  { op: "push", value: 2 },
  { op: "push", value: 3 },
  { op: "peek" },
  { op: "size" },
  { op: "pop" },
  { op: "isEmpty" }
]

Выход:
[null, null, null, 3, 3, 3, false]
Loading...