Прокомментировать код заполнения списка - C (СИ)
Формулировка задачи:
Помогите, пожалуйста, разобраться со списками. Завал с ними был ещё в мае, после лета в голове вообще одна каша, и никаких умных мыслей. вот пример простой задачи, прошу, чтобы описали, что именно творится в каждой строчке. ну или хотя бы в заполнении списка
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- typedef struct st
- { char ch;
- struct st *next;
- } stack;
- main()
- { stack *p,*q;
- char a;
- p=NULL;
- system (“CLS”);
- // заполнение стека
- do
- { a=getchar();
- q=(stack *)malloc(sizeof(stack));
- q->next=p;
- p=q;
- q->ch=a;
- } while(a!='.');
- // печать стека c освобождением памяти
- do
- { p=q->next;
- free(q);
- q=p;
- printf("%c",p->ch);
- } while(p->next!=NULL);
- getch();
- return 0;
- }
Решение задачи: «Прокомментировать код заполнения списка»
textual
Листинг программы
- typedef struct st { // одна ячейка списка
- char ch; // хранит один байт
- struct st *next; // и ссылку на предыдущую ячейку
- } stack;
- stack *q, *p;
- char a;
- p=NULL;
- // заполнение стека
- do
- {
- q=(stack *)malloc(sizeof(stack)); // выделяется память под ячейку
- q->ch= getchar(); // ячейка заполняется символом из stdin
- q->next=p; // и ссылкой на предыдущую ячейку (для первой ячейки - NULL)
- p=q;
- } while(q->ch!='.'); // полледним в стек заносится символ '.'
Объяснение кода листинга программы
- В первой строке объявляется структура данных
st
для представления одной ячейки в списке. Она содержит один символ и указатель на следующую ячейку. - Затем объявляются две переменные типа
stack
-p
иq
, а также переменнаяa
типаchar
. Переменнаяp
инициализируется значением NULL. - В цикле
do-while
выделяется память под новую ячейкуq
, заполняется её полеch
символом, считываемым из стандартного ввода, и создается ссылка на предыдущую ячейкуp
. Значениеp
обновляется, указывая на новую ячейкуq
. Цикл продолжается, пока не будет считан символ '.' - После окончания цикла, последняя ячейка списка указывает на саму себя, так как
p
не обновляется, когда считывается символ '.'
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д