/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @param k int整型
* @return ListNode类
*/
ListNode* reverseKGroup(ListNode* head, int k) {
// write code here
ListNode* hail = new ListNode(0);
hail->next = head;
ListNode* slow = hail;
ListNode* fast = hail;
ListNode* temp1;
while(fast != nullptr){
for(int i=0; i<k; i++){
if(fast != nullptr){
fast = fast->next;
}
}
if(fast == nullptr){
break;
}
temp1 = slow->next;
slow->next = reverseList(slow->next, fast);
slow = temp1;
fast = temp1;
}
return hail->next;
}
ListNode* reverseList(ListNode* slow, ListNode* fast){
ListNode* pre = fast->next;
ListNode* post = nullptr;
ListNode* cur = slow;
while(pre != fast){
post = cur->next;
cur->next = pre;
pre = cur;
cur = post;
}
return pre;
}
};