Reversing a linked list
So again, here is how you can reverse a singly-linked list :
reverse(struct node ** start)
{
struct node * prev = NULL;
struct node * curr = *start;while(curr)
{swap(&prev, &curr->next);
swap(&curr, &prev);}
*start = prev;
}
and here is for a doubly-linked list :
reverse(struct node **start)
{
struct node *curr = *start;
while(curr)
{swap(&curr->prev, &curr->next);
if(!curr->prev)*start = curr;
curr = curr->prev;
}
}
Categories: Uncategorized