Заполнение списка данными - C (СИ)
Формулировка задачи:
Помогите пожалуйста, нужен кусок кода который будет заполнять список данными на языке Си
Решение задачи: «Заполнение списка данными»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define N 5 typedef struct List { int data; struct List *next; } List; typedef struct Mylist { List *root, *carr; } Mylist; Mylist *InitMylist( void ) { Mylist *u=(Mylist*)malloc(sizeof(Mylist)); u->root = (List*)malloc(sizeof(List)); u->carr = u->root; if(u->root==NULL)return NULL; u->root->next=NULL; return u; } void AddLast_Mylist(Mylist *u, int a) { u->carr->data=a; u->carr->next=(List*)malloc(sizeof(List)); u->carr=u->carr->next; u->carr->next=NULL; } void Delete_Mylist(Mylist* u) { List* uk; while(u->root!=NULL) { uk=u->root; u->root=u->root->next; free(uk); } free(u); } void Print_Mylist(Mylist * u) { List* uk=u->root; while(uk->next!=NULL) { printf("%d\n", uk->data); uk=uk->next; } } int main(void) { Mylist *sp=InitMylist(); int d; char x; for(int i=1; i<=N; ++i) { printf("Vvedite chisla v spisok: "); scanf("%d", &d); AddLast_Mylist(sp, d); printf("Prodolzhit? y/n: "); while(getchar()!='\n'); scanf("%c", &x); if(x=='n')break; } Print_Mylist(sp); Delete_Mylist(sp); sp=NULL; return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
- #include
для работы с функциями ввода-вывода - #include
для работы с функцией malloc и cfree - #include
для работы со строками (необходимо для функции scanf)
- #include
- Определяем пользовательские типы данных:
- typedef struct List - создаем тип данных для представления узла списка
- typedef struct Mylist - создаем тип данных для представления списка
- Создаем функцию инициализации списка:
- *Mylist InitMylist( void )** - возвращает указатель на голову списка
- Добавляем элемент в список:
- *void AddLast_Mylist(Mylist u, int a)** - добавляет элемент в конец списка
- Удаляем элемент из списка:
- *void Delete_Mylist(Mylist u)** - удаляет все элементы списка
- Печатаем список:
- *void Print_Mylist(Mylist u)** - печатает все элементы списка
- В функции main() создаем экземпляр списка:
- *Mylist sp=InitMylist();**
- Запрашиваем у пользователя данные и добавляем их в список:
- for(int i=1; i<=N; ++i)
- printf(
Vvedite chisla v spisok:
); - scanf(
%d
, &d); - AddLast_Mylist(sp, d);
- Печатаем список и удаляем его:
- Print_Mylist(sp);
- Delete_Mylist(sp);
- Не забываем освободить память:
- free(sp);
- Возвращаем 0, чтобы указать, что программа успешно завершилась:
- return 0;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д