Создать стек вещественных чисел на основе статического массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Создать стек вещественных чисел на основе статического массива. Реализовать методы : Добавить элемент, удалить элемент, вершина стека.

Решение задачи: «Создать стек вещественных чисел на основе статического массива»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct node_t
  5. {
  6.     float value;
  7.     struct node_t* next;
  8. }   TNode;
  9.  
  10. //----------------------------------------------------------------------------
  11. TNode* Push(TNode** stack, float value)
  12. {
  13.     TNode* node = malloc(sizeof(TNode));
  14.     node->value = value;
  15.     node->next = *stack;
  16.    
  17.     *stack = node;
  18.    
  19.     return *stack;
  20. }
  21. //----------------------------------------------------------------------------
  22. float Pop(TNode** stack)
  23. {
  24.     TNode* node = *stack;
  25.     float value = node->value;
  26.    
  27.     *stack = node->next;
  28.    
  29.     free(node);
  30.    
  31.     return value;
  32. }
  33. //----------------------------------------------------------------------------
  34. float Top(const TNode** stack)
  35. {
  36.     return (*stack)->value;
  37. }
  38. //----------------------------------------------------------------------------
  39.  
  40. int main()
  41. {
  42.     const float CValues[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  43.     const size_t CValuesSize = sizeof(CValues) / sizeof(*CValues);
  44.    
  45.     TNode* stack = NULL;
  46.     size_t i;
  47.    
  48.     for (i = 0; i < CValuesSize; ++i)
  49.     {
  50.         Push(&stack, CValues[i]);
  51.     }
  52.    
  53.     while (stack)
  54.     {
  55.         printf("%.2f ", Pop(&stack));
  56.     }
  57.    
  58.     return 0;
  59. }

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

  1. Включаются необходимые заголовочные файлы: stdlib.h для функций malloc и free, а также для объявления типа float; printf.h для функции printf.
  2. Объявляется структура узла TNode, которая содержит значение float и указатель на следующий узел.
  3. Создаются функции для работы со стеком: Push для добавления элемента в стек, Pop для удаления элемента из стека и Top для получения значения вершины стека без её удаления.
  4. В функции main создаётся массив CValues, инициализированный значениями от 1 до 10.
  5. Инициализируется указатель stack как NULL.
  6. В цикле добавляются все элементы массива CValues в стек с помощью функции Push.
  7. В цикле, пока stack не пуст, с помощью функции Pop удаляются значения из стека и выводятся на экран с помощью функции printf.
  8. В конце программы возвращается 0, что означает успешный конец работы программы.

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


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

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

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы