实现单链表的就地逆置
时间: 2023-10-16 18:11:51 浏览: 68
单链表的就地逆置可以通过头插法或递归法来实现。头插法是将原链表的每个节点依次插入到新链表的头部,最终得到逆序后的链表。递归法则是先将表头结点从链表中拆出来,然后对剩余部分进行逆序,最后将当前的表头结点链接到逆序链表的尾部。
下面是使用头插法实现单链表的就地逆置的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct List {
int data;
struct List* next;
} LIST;
// 表的初始化,不带头节点
LIST* CreatSlist() {
LIST* head = NULL;
for (int i = 5; i >= 1; i--) {
LIST* newhead = (LIST*)malloc(sizeof(LIST));
newhead->data = i;
newhead->next = head;
head = newhead;
}
return head;
}
// 打印输出
void print(LIST* P) {
while (P != NULL) {
printf("%d ", P->data);
P = P->next;
}
printf("\n");
return;
}
// 单链表反转(头插法)
LIST* reverse(LIST* head) {
LIST *temp = NULL, *Phead = NULL;
while (head != NULL) {
temp = head;
head = head->next;
temp->next = Phead;
Phead = temp;
}
return Phead;
}
int main() {
printf("原来的链表的数据:\n");
LIST* P = CreatSlist();
print(P);
printf("反转后链表的数据:\n");
LIST* head = reverse(P);
print(head);
return 0;
}
```
相关推荐
![](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)