单链表分段逆转:给定一个带头结点的单链表和一个整数K,要求将链表中的每K个结点做一次逆转。要求可运行的完整c语言代码
时间: 2024-06-13 21:05:15 浏览: 19
以下是可运行的完整C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node *PtrToNode;
struct Node {
int Data;
PtrToNode Next;
};
typedef PtrToNode List;
List ReadList(); // 读取链表
void PrintList(List L); // 输出链表
List K_Reverse(List L, int K); // 分段逆转链表
int main() {
int K;
List L, newL;
L = ReadList();
scanf("%d", &K);
newL = K_Reverse(L, K);
PrintList(newL);
return 0;
}
List ReadList() {
int N, i;
List L, p;
L = (List)malloc(sizeof(struct Node));
L->Next = NULL;
p = L;
scanf("%d", &N);
for (i = 0; i < N; i++) {
p->Next = (List)malloc(sizeof(struct Node));
p = p->Next;
scanf("%d", &p->Data);
p->Next = NULL;
}
return L;
}
void PrintList(List L) {
List p = L->Next;
while (p) {
printf("%d ", p->Data);
p = p->Next;
}
printf("\n");
}
List K_Reverse(List L, int K) {
List p, q, r, newL;
int i, j;
newL = (List)malloc(sizeof(struct Node));
newL->Next = NULL;
r = newL;
p = L->Next;
while (p) {
q = p;
for (i = 1; i < K && q; i++) {
q = q->Next;
}
if (!q) {
r->Next = p;
break;
}
for (i = 1; i < K && p; i++) {
r->Next = p;
p = p->Next;
r->Next->Next = NULL;
r = r->Next;
}
r->Next = q;
}
return newL;
}
```
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.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)