Прокомментировать код заполнения списка - C (СИ)

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

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

Помогите, пожалуйста, разобраться со списками. Завал с ними был ещё в мае, после лета в голове вообще одна каша, и никаких умных мыслей. вот пример простой задачи, прошу, чтобы описали, что именно творится в каждой строчке. ну или хотя бы в заполнении списка
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. typedef struct st
  5. { char ch;
  6. struct st *next;
  7. } stack;
  8. main()
  9. { stack *p,*q;
  10. char a;
  11. p=NULL;
  12. system (“CLS”);
  13. // заполнение стека
  14. do
  15. { a=getchar();
  16. q=(stack *)malloc(sizeof(stack));
  17. q->next=p;
  18. p=q;
  19. q->ch=a;
  20. } while(a!='.');
  21. // печать стека c освобождением памяти
  22. do
  23. { p=q->next;
  24. free(q);
  25. q=p;
  26. printf("%c",p->ch);
  27. } while(p->next!=NULL);
  28. getch();
  29. return 0;
  30. }

Решение задачи: «Прокомментировать код заполнения списка»

textual
Листинг программы
  1. typedef struct st {  // одна ячейка списка
  2.   char ch;                  // хранит один байт
  3.   struct st *next;        // и ссылку на предыдущую ячейку
  4. } stack;
  5.  
  6.   stack *q, *p;
  7.   char a;
  8.   p=NULL;
  9.   //  заполнение стека
  10.   do
  11.   {
  12.     q=(stack *)malloc(sizeof(stack));  // выделяется память под ячейку
  13.     q->ch= getchar();                      // ячейка заполняется символом из stdin
  14.     q->next=p;                               // и ссылкой на предыдущую ячейку (для первой ячейки - NULL)
  15.     p=q;
  16.   }  while(q->ch!='.');                     // полледним в стек заносится символ '.'

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

  1. В первой строке объявляется структура данных st для представления одной ячейки в списке. Она содержит один символ и указатель на следующую ячейку.
  2. Затем объявляются две переменные типа stack - p и q, а также переменная a типа char. Переменная p инициализируется значением NULL.
  3. В цикле do-while выделяется память под новую ячейку q, заполняется её поле ch символом, считываемым из стандартного ввода, и создается ссылка на предыдущую ячейку p. Значение p обновляется, указывая на новую ячейку q. Цикл продолжается, пока не будет считан символ '.'
  4. После окончания цикла, последняя ячейка списка указывает на саму себя, так как p не обновляется, когда считывается символ '.'

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


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

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

12   голосов , оценка 4.167 из 5

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

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

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