Jun 23, 2009

Reverse double linked list

Reverse double linked list
//recursion
list* rev(list* head)
{
if(!head) return head;
if(!head->next) return head;
list* tail=rev(head->next);
head->next->prev=head->next->next;
head->next->next=head;
head->prev=head->next;
head->next=null;
return tail;
}

list* foo(list* head)
{
list* curr=head;
list* prev=next=NULL;
while(curr)
{
next=curr->next;
curr->next=prev;
curr->prev=next;
prev=curr;
curr=next;
}
return prev;
}

No comments:

Post a Comment