//此题的要求是常数的空间,所以以K大小建立以个存储空间记录每K个节点的值
class Solution {
public:ListNode* reverseKGroup(ListNode* head, int k)
{
if(head==NULL||k==0)
return head;
int *data=new int[k];;
ListNode* p=head;
while(1&&p)
{
int i=0;
ListNode* q=p;
while(i<k)
{
if(q)
{
data[i]=q->val;
q=q->next;
}
else
{
break;
}
i++;
}
if(i!=k)
break;
else
{
i=0;
while(i<k)
{
p->val=data[k-1-i];
i++;
p=p->next;
}
}
}
delete []data;
return head;
}
};