После того, как мы узнали, что такое список, самое время начать применять полученные знания на практике. И первое, с чего мы начнем — реализуем стек, но не на массиве, а теперь уже на односвязном линейном списке.
Так как мы уже имеем модуль со списком, то реализовывать стек нужно, опираясь на него, то есть использовать только то, что имеем и не добавлять ничего нового.
Для работы со стеком нужно реализовать пять функций:
- Инициализация
- Включение элемента
- Исключение элемента
- Проверка на пустоту
- Удаление стека
Так как все операции над списком выполняются после рабочего указателя, а при инициализации, указатель стоит в начале списка, то, если не перемещать указатель, список и будет нашим стеком. Таким образом, все, что от нас требуется — сделать обертки нужных функций.
Файл Stack_List.h
Файл Stack_List.c
Как видите, реализация оказалась не такой уж и сложной. В заголовочном файле стека подключается список, благодаря чему мы имеем возможность пользоваться всеми его функциями. Также следует отметить, что для стека мы не создаем переменную ошибок, а используем listOneError, которая определена в списке. Таким образом, если при работе со списком произойдет какая-либо ошибка, мы о ней будем знать.
На этом все, если у Вас возникли вопросы, можете задавать их в комментариях.