Прокомментировать код заполнения списка - 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!='.');                     // полледним в стек заносится символ '.'

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

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

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


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

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

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