Заполнение списка данными - C (СИ)

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

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

Помогите пожалуйста, нужен кусок кода который будет заполнять список данными на языке Си

Решение задачи: «Заполнение списка данными»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 5
  4.  
  5. typedef struct List
  6. {
  7.     int data;
  8.     struct List *next;
  9. } List;
  10.  
  11. typedef struct Mylist
  12. {
  13.     List *root, *carr;
  14. } Mylist;
  15.  
  16. Mylist *InitMylist( void )
  17. {
  18.     Mylist *u=(Mylist*)malloc(sizeof(Mylist));
  19.     u->root = (List*)malloc(sizeof(List));
  20.     u->carr = u->root;
  21.     if(u->root==NULL)return NULL;
  22.     u->root->next=NULL;
  23.     return u;
  24. }
  25.  
  26. void AddLast_Mylist(Mylist *u, int a)
  27. {
  28.     u->carr->data=a;
  29.     u->carr->next=(List*)malloc(sizeof(List));
  30.     u->carr=u->carr->next;
  31.     u->carr->next=NULL;
  32. }
  33.  
  34. void Delete_Mylist(Mylist* u)
  35. {
  36.     List* uk;
  37.     while(u->root!=NULL)
  38.     {
  39.         uk=u->root;
  40.         u->root=u->root->next;
  41.         free(uk);
  42.     }
  43.     free(u);
  44. }
  45.  
  46. void Print_Mylist(Mylist * u)
  47. {
  48.     List* uk=u->root;
  49.     while(uk->next!=NULL)
  50.     {
  51.         printf("%d\n", uk->data);
  52.         uk=uk->next;
  53.     }
  54. }
  55.  
  56.  
  57. int main(void)
  58. {
  59.     Mylist *sp=InitMylist();
  60.     int d;
  61.     char x;
  62.  
  63.     for(int i=1; i<=N; ++i)
  64.     {
  65.         printf("Vvedite chisla v spisok: ");
  66.         scanf("%d", &d);
  67.         AddLast_Mylist(sp, d);
  68.         printf("Prodolzhit? y/n: ");
  69.         while(getchar()!='\n');
  70.         scanf("%c", &x);
  71.         if(x=='n')break;
  72.     }
  73.  Print_Mylist(sp);
  74.  
  75. Delete_Mylist(sp);
  76.  
  77.     sp=NULL;
  78.  
  79.     return 0;
  80. }

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

  1. Включаем необходимые заголовочные файлы:
    • #include для работы с функциями ввода-вывода
    • #include для работы с функцией malloc и cfree
    • #include для работы со строками (необходимо для функции scanf)
  2. Определяем пользовательские типы данных:
    • typedef struct List - создаем тип данных для представления узла списка
    • typedef struct Mylist - создаем тип данных для представления списка
  3. Создаем функцию инициализации списка:
    • *Mylist InitMylist( void )** - возвращает указатель на голову списка
  4. Добавляем элемент в список:
    • *void AddLast_Mylist(Mylist u, int a)** - добавляет элемент в конец списка
  5. Удаляем элемент из списка:
    • *void Delete_Mylist(Mylist u)** - удаляет все элементы списка
  6. Печатаем список:
    • *void Print_Mylist(Mylist u)** - печатает все элементы списка
  7. В функции main() создаем экземпляр списка:
    • *Mylist sp=InitMylist();**
  8. Запрашиваем у пользователя данные и добавляем их в список:
    • for(int i=1; i<=N; ++i)
    • printf(Vvedite chisla v spisok:);
    • scanf(%d, &d);
    • AddLast_Mylist(sp, d);
  9. Печатаем список и удаляем его:
    • Print_Mylist(sp);
    • Delete_Mylist(sp);
  10. Не забываем освободить память:
    • free(sp);
  11. Возвращаем 0, чтобы указать, что программа успешно завершилась:
    • return 0;

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


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

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

6   голосов , оценка 4 из 5

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

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

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