Как стек 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;
}

Объяснение кода листинга программы

  1. Структура данных st объявлена как стек.
  2. Функция push добавляет новый узел в стек.
  3. Функция print выводит значения всех узлов стека.
  4. Функция peek возвращает значение вершины стека и проверяет, является ли стек пустым.
  5. В функции main создается пустой стек stack.
  6. В цикле десять раз вызывается функция push, чтобы добавить значения от 11 до 20 в стек.
  7. Вызывается функция print, чтобы вывести значения стека.
  8. Вызывается функция peek, чтобы проверить, является ли стек пустым.
  9. Если стек не пуст, выводится значение вершины стека.
  10. Если стек пуст, выводится сообщение об ошибке.
  11. Программа завершается с возвращаемым значением 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы