Создать стек вещественных чисел на основе статического массива - 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, что означает успешный конец работы программы.