Пусть есть некоторый тип данных Value
. Реализуется стек (LIFO) из элементов этого типа.
Для этого определяются следующие глобальные переменные:
Value *stackItems;
int stackCapacity;
stackItems
— это массив для хранения элементов стека. Переменная stackCapacity
хранит размер этого массива. Оно же равно предельному числу переменных типа Value
, которые можно поместить в стек.
Функция int stackInit(int capacity);
предназначена для создания пустого стека с максимальным количеством элементов capacity
. Если это удается, функция возвращает 0. Иначе функция возвращает ненулевой код ошибки. Далее размер массива не меняется.
Функция int stackPush(Value *value);
предназначена для добавления *value
на вершину стека. Если это удается, функция возвращает 0. Иначе функция возвращает ненулевой код ошибки.
Функция int stackPop(Value *value);
предназначена для извлечения элемента с вершины стека и записи его по указателю value
. Если это удается, функция возвращает 0. Иначе функция возвращает ненулевой код ошибки.
Других функций, работающих с этими переменными, нет.
Исходный текст заголовочного файла с объявлениями переменных и функций можно скачать по этой ссылке. Вам нужно дополнить его спецификациями переменных и функций, отражающими все вышеописанные требования (и только их). Готовый файл отправляйте на почту до 12:00 23 апреля.