Reverse a Linked List in groups of given size K

Here is the iterative solution..

list reversek(list current, int k)
{
list r = NULL;
Node *head;

while(current)
{
int count = k;
Node *next, *prev = NULL;
Node *p = current;

while(current && count--)
{
next = current->next;
current->next = prev;
prev = current;
current = next;
}

if(!r)
r = prev;
else
head->next = prev;

head = p;
}
return r;
}
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s