题解 | #链表中的节点每k个一组翻转#
链表中的节点每k个一组翻转
https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ struct ListNode* reverseKGroup(struct ListNode* head, int k ) { // write code here if(head == NULL || head->next == NULL){ return head; } struct ListNode* p = (struct ListNode*)malloc(sizeof(struct ListNode)); p->val=0; p->next=head; struct ListNode* prev = p; int c=1; struct ListNode* h1=head; while((h1=h1->next)!=NULL){ c++; } for(int i=0; i < c/k;i++){ struct ListNode* stat = p->next; int m = k*i+1; int n = k*(i+1); // 取m及(m-1)位置元素 for(int j = 1; j < m; j++){ prev=stat; stat=stat->next; } // 倒序 for(int j = 0; j<n-m;j++){ struct ListNode *temp = stat->next; stat->next=temp->next; temp->next = prev->next; prev->next=temp; } } return p->next; }