One of the frequently asked question in the interviews is to reverse a singly-linked list using iterative and recursive approach.
Iterative Approach
void ireverse()
{
Node *current = head;
Node *prev = NULL;
Node *next = current->link;
while(next != NULL)
{
current->link = prev;
prev = current;
current = next;
next = next->link;
}
current->link = prev;
head = current;
}
Recursive Approach
void reverse(Node *current, Node *prev, Node *next)
{
if(next == NULL)
{
current->link = prev;
head = current;
return;
}
current->link = prev;
reverse(next, current, next->link);
}
1. The complete C++ program can be viewed here
2. Java programmers can find the Java version of the above problem here
No comments :
Post a Comment