Example:
input: 1->2->3->4->5->6->7->8->NULL and k = 3
output:3->2->1->6->5->4->7->8->NULL
Node* inverstList(Node *head, int num)
{
Node *prev, *curr, *next;
int count = 0;
if (num == 0 || num == 1)
return head;
prev = head;
curr = prev->next;
next = curr->next;
while (num-1 > count)
{
if (curr != NULL)
{
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
count++;
}
else
{
curr = prev->next;
prev->next = NULL;
while (count > 0)
{
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
count--;
}
return prev;
}
}
if (next != NULL)
head->next = inverstList(next, num);
else
head->next = NULL;
return prev;
}