Программа должна уметь по команде создать односвязный список, добавить элемент в начало, середину или конец - C (СИ)
Формулировка задачи:
Доброго времени суток всем читающим. Поступил на мехмат, но больше всего мозги делают с программированием. Задача состоит в том, чтобы написать программу с диалоговым меню и набором заданных команд. Программа должна уметь по команде создать односвязный список, добавить элемент в начало, середину или конец, удалить элемент оттуда же, вывести список на печать, или удалить список.Интернет был перелопачен в немыслимых размерах еще две ночи назад, но толком ничего не было найдено. Прошу опытных С-кодеров объяснить пошагово, что такое односвязные списки и под каким соусом их подавать.
Решение задачи: «Программа должна уметь по команде создать односвязный список, добавить элемент в начало, середину или конец»
textual
Листинг программы
typedef struct node
{
int value;
struct node *next;
}node;
node *head;
void add(int value)
{
node *new = malloc(sizeof(node));
if(!new) return;
new->value = value;
new->next = head;
head = new;
}
int main(void)
{
add(500);
}
Объяснение кода листинга программы
- Объявлен тип структуры
node, которая содержит целочисленное значение и указатель на следующий элемент списка. - Объявлена переменная
headтипаnode*, которая будет хранить указатель на первый элемент списка. - Выделена память под новый элемент списка с помощью функции
malloc. - Если выделение памяти прошло успешно, то в новом элементе списка устанавливается значение
valueравное переданному аргументу функцииadd. - Устанавливается указатель
nextнового элемента списка равнымhead, что означает, что новый элемент становится первым в списке. - Указатель
headприсваивается адрес нового элемента списка. - В функции
mainсоздается экземпляр списка, вызывается функцияaddс аргументом 500.