单链表分段逆转:给定一个带头结点的单链表和一个整数K,要求用c语言将链表中的每K个结点做一次逆转。
时间: 2024-06-13 20:05:12 浏览: 16
单链表分段逆转是指将一个带头结点的单链表按照一定的长度K进行分段,然后对每一段进行逆转操作,最终得到整个链表的逆转结果。下面是实现该功能的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
ListNode* reverseKGroup(ListNode* head, int k) {
if (head == NULL || head->next == NULL || k == 1) {
return head;
}
ListNode *dummy = (ListNode *)malloc(sizeof(ListNode));
dummy->next = head;
ListNode *pre = dummy, *cur = head, *nex = head->next;
int len = 0;
while (head != NULL) {
len++;
head = head->next;
}
while (len >= k) {
for (int i = 1; i < k; i++) {
cur->next = nex->next;
nex->next = pre->next;
pre->next = nex;
nex = cur->next;
}
pre = cur;
cur = nex;
if (nex != NULL) {
nex = nex->next;
}
len -= k;
}
return dummy->next;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)