Как создать список? - C (СИ)
Формулировка задачи:
Нужно просто создать список(пожалуйста с подробностями)
Решение задачи: «Как создать список?»
textual
Листинг программы
#include <stdio.h> struct Some { int data; struct Some* next; }; struct Some* inithead(int _data) // Initializing a head of list { struct Some* element = (struct Some *)malloc( sizeof(struct Some) ); element->data = _data; element->next = NULL; return element; } int addelem(struct Some* _head, int _data) // Adding an element to the tail of _head { if (!_head) { printf("NULL-pointer head!\n"); return -1; } while (_head->next) _head = _head->next; _head->next = (struct Some *)malloc( sizeof(struct Some) ); _head = _head->next; _head->data = _data; _head->next = NULL; return 0; } struct Some* findelem(struct Some* _head, int _index) // Searches for an element by index { if (!_head) { printf("NULL-pointer head!\n"); return NULL; } if (_index < 0) { printf("The index must be greater than 0. Or can be 0.\n"); return NULL; } int index = 0; while (_head->next && _index != index) { ++index; _head = _head->next; } if (_index != index) return NULL; return _head; } int main(void) { struct Some* some = inithead(0); // Создали голову printf("%d\n", some->data); // Вывели значение головы на консоль for (int i = 1; i <= 10; ++i) { addelem(some, i); // Добавили элемент, проинициализировали значением i printf("%d\n", findelem(some, i)->data); // Вывели на экран } system("pause"); return 0; }
Объяснение кода листинга программы
- Включаем заголовочный файл
stdio.h
, который содержит функции для ввода и вывода данных. - Создаём структуру
Some
, которая содержит указатель на следующий элемент списка и значение данных. - Функция
inithead
инициализирует голову списка, выделяя память под новый элемент списка и инициализируя его поля. - Функция
addelem
добавляет элемент в конец списка, инициализируя его поля и устанавливая ссылку на следующий элемент. - Функция
findelem
находит элемент списка по индексу, начиная с головы списка и переходя к следующему элементу до тех пор, пока не будет найден нужный элемент или пока не будут пройдены все элементы списка. - В функции main создаём голову списка, инициализируя её значением 0.
- Выводим значение головы списка на консоль.
- Добавляем элементы в список, вызывая функцию
addelem
и передавая ей голову списка и значение i. - Выводим значение нового элемента списка на консоль, вызывая функцию
findelem
и передавая ей голову списка и значение i. - Приостанавливаем программу до нажатия клавиши, вызывая функцию
system
и передавая ей строкуpause
. - Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д