Работа со списком, структуры - код не компилируется - 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, что означает конец списка. - Функция возвращает указатель на узел, который был только что
отрезанот списка. - Отрезанный узел теперь может быть безопасно удален, так как он больше не связан с остальной частью списка.