将带头节点单链表逆置递归c语言
时间: 2024-10-09 17:01:23 浏览: 43
在C语言中,你可以使用递归来实现带头节点单链表的反转。这里是一个简单的示例:
首先,我们需要定义链表节点结构体和头结点变量:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* head = NULL; // 假设head已经指向了链表的第一个元素
```
接下来,定义一个递归函数`reverseListRecursively(Node* curr)`,它会接收当前节点作为参数,并返回反转后的链表头。
```c
Node* reverseListRecursively(Node* curr) {
if (curr == NULL || curr->next == NULL) { // 如果当前节点为空或者已经是最后一个节点,直接返回
return curr;
}
// 递归:先处理下一个节点
Node* nextTemp = curr->next;
curr->next = reverseListRecursively(nextTemp); // 令当前节点的next指向递归的结果
// 最后将递归回来的链表接到当前节点的尾部
nextTemp->next = curr;
return nextTemp; // 返回反转后的新头节点
```
要实际反转链表,只需调用这个函数并更新头节点:
```c
head = reverseListRecursively(head);
```
阅读全文