Заполнение списка данными - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д