@ Unicornaddict уже опубликовал правильный алгоритм.
Но, если вы все еще получаете segmentation fault
, я подозреваю, что вы делаете какую-то ошибку при вызове функции из main
.
Правильно:
head->next = recursiveReverseList(head->next);
Пояснение:
- Передать
head->next
в рекурсивную функцию. Если вы передадите head
, он сделает что-то вроде
До звонка:
голова ---> A ---> B ---> C
После звонка:
голова <--- A <--- B <--- C </strong>
, который заставит head
указать на NULL
и A
указать на head
- После передачи
head->next
в качестве аргумента состояние списка:
голова ---> A <--- B <--- C </strong>
Итак, вам нужно head
указать на rest
(C
в данном случае).