Создать стек вещественных чисел на основе статического массива - C (СИ)
Формулировка задачи:
Создать стек вещественных чисел на основе статического массива. Реализовать методы : Добавить элемент, удалить элемент, вершина стека.
Решение задачи: «Создать стек вещественных чисел на основе статического массива»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct node_t
- {
- float value;
- struct node_t* next;
- } TNode;
- //----------------------------------------------------------------------------
- TNode* Push(TNode** stack, float value)
- {
- TNode* node = malloc(sizeof(TNode));
- node->value = value;
- node->next = *stack;
- *stack = node;
- return *stack;
- }
- //----------------------------------------------------------------------------
- float Pop(TNode** stack)
- {
- TNode* node = *stack;
- float value = node->value;
- *stack = node->next;
- free(node);
- return value;
- }
- //----------------------------------------------------------------------------
- float Top(const TNode** stack)
- {
- return (*stack)->value;
- }
- //----------------------------------------------------------------------------
- int main()
- {
- const float CValues[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
- const size_t CValuesSize = sizeof(CValues) / sizeof(*CValues);
- TNode* stack = NULL;
- size_t i;
- for (i = 0; i < CValuesSize; ++i)
- {
- Push(&stack, CValues[i]);
- }
- while (stack)
- {
- printf("%.2f ", Pop(&stack));
- }
- return 0;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdlib.h для функций malloc и free, а также для объявления типа float; printf.h для функции printf.
- Объявляется структура узла TNode, которая содержит значение float и указатель на следующий узел.
- Создаются функции для работы со стеком: Push для добавления элемента в стек, Pop для удаления элемента из стека и Top для получения значения вершины стека без её удаления.
- В функции main создаётся массив CValues, инициализированный значениями от 1 до 10.
- Инициализируется указатель stack как NULL.
- В цикле добавляются все элементы массива CValues в стек с помощью функции Push.
- В цикле, пока stack не пуст, с помощью функции Pop удаляются значения из стека и выводятся на экран с помощью функции printf.
- В конце программы возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д