Работа со списком, структуры - код не компилируется - C (СИ)
Формулировка задачи:
Добрый вечер, сегодня на паре препод написал на доске, мы ничего не поняли, никто не может помочь разобраться?(( Буду очень благодарен любым разъяснениям
использую Xcode (ну просто нет дома РС) компилятор выдал ондни ошибки (((
#include <stdio.h> int main () { struct node { struct node* next; void* data; }; next == 0; /* конец списка */ struct node* node_alloc () { struct node* p=(struct node*) malloc (sizeof (struct node)); p->next=0; return p; }; /* Добавление/удаление элемента в списке */ void node_insert_after (struct node* list, struct node* item) { struct node* next = list -> next; list -> next = item; item -> next = next; }; /* Выделение эл-тов из списка */ struct node* node_remove_after (struct node* list) { struct node* next = list -> next; list -> next = next -> next; next -> next = 0; return next; }; }
upupup
Решение задачи: «Работа со списком, структуры - код не компилируется»
textual
Листинг программы
struct node* node_remove_after (struct node* list) { struct node* next = list -> next; list -> next = next -> next; next -> next = 0; return next; };
Объяснение кода листинга программы
- В функции
node_remove_after
предполагается, что список представлен в виде связанных между собой узлов. - При вызове функции
node_remove_after
в качестве аргумента передается указатель на первый узел списка. - Внутри функции создается временная переменная
next
типаstruct node*
и инициализируется значениемlist->next
. - Значение
list->next
изменяется наnext->next
, т.е. на следующий узел списка после текущего. - Значение
next->next
изменяется на0
, т.е. наNULL
, что означает конец списка. - Функция возвращает указатель на узел, который был только что
отрезан
от списка. - Отрезанный узел теперь может быть безопасно удален, так как он больше не связан с остальной частью списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д