Всем привет.
Дали задачку на реверс списка:
int main(void)
{
struct Node *list;
alloc_list(&list);
print_list(list); /* 0 1 2 3 4 */
revert_list(list);
print_list(list); /* 4 3 2 1 0 */
return 0;
}
void revert_list(struct Node *list_head)
{
struct Node *p = NULL; /* previous */
struct Node *c = NULL; /* current */
struct Node *n = NULL; /* next */
c = list_head;
while(c != NULL) {
n = c->next;
c->next = p;
p = c;
c = n;
}
list_head = p;
print_list(list_head);
}
К моему удивлению, если print_list вызывается из main(), то печатается 0, а внутри reverse_list всё хорошо:
gcc -Wall -Wextra -Wpedantic -g3 rlist.c -o rlist && ./rlist
0 1 2 3 4
4 3 2 1 0
0