Как стек st реализовать с помощью одного списка - C (СИ)
Формулировка задачи:
Как стек st реализовать с помощью одного списка. И записать инструкцию языка Си для получения в переменной m значение с верхушки стека с помощью функции peek. Корректность операции контролировать переменной err.
Решение задачи: «Как стек st реализовать с помощью одного списка»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> struct st { int value; struct st* next; }; //----------------------------------------------------------------------------- void push(struct st** stack, int value) { struct st* node = malloc(sizeof(struct st)); node->value = value; node->next = *stack; *stack = node; } //----------------------------------------------------------------------------- void print(const struct st* stack) { for (; stack; stack = stack->next) { printf("%d ", stack->value); } printf("\n"); } //----------------------------------------------------------------------------- void peek(const struct st* stack, int* m, int* err) { *err = (stack == NULL); if (*err == 0) { *m = stack->value; } } //----------------------------------------------------------------------------- int main() { struct st* stack = NULL; int i = 10; int m, err; while (i--) { push(&stack, i + 1); } print(stack); peek(stack, &m, &err); if (err == 0) { printf("top = %d\n", m); } else { printf("error\n"); } return 0; }
Объяснение кода листинга программы
- Структура данных
st
объявлена как стек. - Функция
push
добавляет новый узел в стек. - Функция
print
выводит значения всех узлов стека. - Функция
peek
возвращает значение вершины стека и проверяет, является ли стек пустым. - В функции
main
создается пустой стекstack
. - В цикле десять раз вызывается функция
push
, чтобы добавить значения от 11 до 20 в стек. - Вызывается функция
print
, чтобы вывести значения стека. - Вызывается функция
peek
, чтобы проверить, является ли стек пустым. - Если стек не пуст, выводится значение вершины стека.
- Если стек пуст, выводится сообщение об ошибке.
- Программа завершается с возвращаемым значением 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д