头插法
pre保存上一段的尾节点
cur保存下一段的头节点
temp是cur后面的一个节点,不断拿出来插入pre后面
遍历得到长度,直到几个段反转,每个段反转k-1次。
class Solution {
public:
ListNode* reverseKGroup(ListNode* head, int k) {
int length=0;
ListNode* t=head;
while(t){
length++;
t=t->next;
}
ListNode* res=new ListNode(0);
//res->next=head;
ListNode *pre=res,*cur=head,*temp=NULL;
for(int i=0;i<length/k;i++){
for(int j=1;j<k;j++){
temp=cur->next;
cur->next=temp->next;
temp->next=pre->next;
pre->next=temp;
}
pre=cur;
cur=cur->next;
}
return res->next;
}
};