Пусть есть некоторый тип данных 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 апреля.