对于不带头结点的非空单链表L,用c语言设计一个递归算法返回最大值结点的地址
时间: 2023-05-25 22:06:38 浏览: 62
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* findMax(Node* head) {
if (head == NULL) { // 如果链表为空,返回NULL
return NULL;
} else if (head->next == NULL) { // 如果链表只有一个结点,返回该结点
return head;
} else {
Node* max = findMax(head->next); // 递归调用,找到后面链表的最大值结点
return (head->data > max->data) ? head : max; // 与当前结点比较,返回最大值结点的地址
}
}
int main() {
Node* head = (Node*) malloc(sizeof(Node)); // 创建不带头结点的单链表
head->data = 1;
head->next = NULL;
Node* node2 = (Node*) malloc(sizeof(Node));
node2->data = 3;
node2->next = NULL;
head->next = node2;
Node* node3 = (Node*) malloc(sizeof(Node));
node3->data = 2;
node3->next = NULL;
node2->next = node3;
Node* node4 = (Node*) malloc(sizeof(Node));
node4->data = 4;
node4->next = NULL;
node3->next = node4;
Node* max = findMax(head);
printf("Max node: %d\n", max->data);
return 0;
}
```