Реализация стека на массиве (Array-Based Stack)
2
Массивы
Стек
Условие:
Реализуйте класс 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 <= 1000 <= 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]