Получить программную реализацию стека на массиве элементов типа float - C (СИ)
Формулировка задачи:
пожалуйста помогите решить эту задачку.
Получить программную реализацию стека на массиве элементов типа
"float". Написать тестовую программу, позволяющую пользователю много-
кратно выполнять различные операции над стеком. Выход из программы
осуществляется по команде пользователя.
Решение задачи: «Получить программную реализацию стека на массиве элементов типа float»
textual
Листинг программы
#include <stdio.h>
#define SIZE 100
typedef struct Stack_t {
float value[SIZE];
size_t size;
} TStack;
//-----------------------------------------------------------------------------
TStack* push(TStack* stack, float value) {
if (stack->size < SIZE) {
stack->value[stack->size++] = value;
}
return stack;
}
//-----------------------------------------------------------------------------
float pop(TStack* stack) {
return stack->size ? stack->value[--stack->size] : 0.0;
}
//-----------------------------------------------------------------------------
void print(const TStack* stack) {
size_t i = stack->size;
while (i--) {
printf("%.3f ", stack->value[i]);
}
printf("\n");
}
//-----------------------------------------------------------------------------
int main() {
TStack stack = {{0.0}, 0};
int i = 0;
while (i++ < 10) {
push(&stack, i);
}
print(&stack);
return 0;
}
Объяснение кода листинга программы
- Объявление макроса SIZE, который задает размер стека.
- Объявление структуры Stack_t, которая представляет собой стек.
- Реализация функции push(), которая добавляет элемент в стек.
- Реализация функции pop(), которая удаляет элемент из стека.
- Реализация функции print(), которая выводит содержимое стека.
- Создание переменной stack типа TStack в функции main().
- Инициализация переменной stack начальным значением 0.0 и размером 0.
- Создание цикла, который добавляет 10 элементов в стек.
- Вызов функции print() для вывода содержимого стека.
- Возврат 0 из функции main(), что означает успешное завершение программы.