I'm fairly new to C and I am trying to create a function to reverse a linked list, passing only the List itself as a parameter. Is this possible to do without passing a node as a parameter?
Here is my code so far, I know it does not work correctly because I cannot figure out how to make the recursive call on the rest of the list.
void reverse(LL_t *L) {
if (L->head->next == NULL) {
return;
}
node_t *rest = L->head->next;
reverse(rest);
node_t *q = rest->next;
q->next = rest;
rest->next = NULL;
}
As well here are my type definitions.
typedef struct {
node_t *head;
node_t *tail;
} LL_t;
typedef struct _node {
int data;
struct _node *next;
} node_t;
reverse(rest);type isn't match.reverserequireLL_t*but type ofrestisnode_t*.LL_tis just a holder, so it makes sense to use thenode_tas a parameter.reverseitself a recursive function, what about supplementary functions (E.gvoid reverse_aux(LL_t*, node_t*)etc.) as recursive functions?