/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* R[2];
void funK(struct ListNode* head, int k)
{
struct ListNode* p,*q;
int i;
for(i=0,q=head;q&&i<k;i++) q=q->next;
if(i<k)
{
R[0]=head;
R[1]=NULL;
return;
}
p=head->next;
head->next=NULL;
for(i=1;i<k;i++)
{
q=p->next;
p->next=head;
head=p;
p=q;
}
R[0]=head;
R[1]=p;
return;
}
struct ListNode* reverseKGroup(struct ListNode* head, int k){
struct ListNode * p,*q;
p=(struct ListNode*)malloc(sizeof(struct ListNode));
p->next=head;
head=p;
q=p->next;
while(q)
{
funK(q,k);
p->next=R[0];
p=q;
q=R[1];
}
p=head;
head=head->next;
free(p);
return head;
}
力扣:25. K 个一组翻转链表
于 2022-05-29 19:30:54 首次发布