k链表翻转。给出一个链表和一个数k。
比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5
若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现。
ListNode* reverseKGroup(ListNode* head, int k)
{
if(head == NULL || k<=0)
return head;
ListNode* cur = head;
for(int i = 0; i < k; i++)
{
if(cur == NULL)
return head;
cur = cur->next;
}
ListNode* nextHead = cur, *pre = NULL, *next;
cur = head;
for(int i = 0; i < k; i++)
{
next = cur->next;
cur->next = pre;
pre = cur;
cur = next;
}
head->next = reverseKGroup(nextHead, k);
return pre;
}