找出单链表中的具有最大值的结点,返回该结点地址
时间: 2024-03-10 16:47:39 浏览: 69
好的,这个问题可以用以下 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结点结构体
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* maxNode(struct ListNode* head) {
if (head == NULL) {
return NULL; // 如果链表为空,返回 NULL
}
struct ListNode *max = head; // 假设头结点为最大值结点
while (head != NULL) {
if (head->val > max->val) {
max = head; // 更新最大值结点
}
head = head->next;
}
return max; // 返回最大值结点地址
}
int main() {
// 创建链表
struct ListNode *head = (struct ListNode *)malloc(sizeof(struct ListNode));
head->val = 1;
head->next = NULL;
struct ListNode *p = head;
for (int i = 2; i <= 10; i++) {
struct ListNode *node = (struct ListNode *)malloc(sizeof(struct ListNode));
node->val = i;
node->next = NULL;
p->next = node;
p = p->next;
}
// 找出单链表中的具有最大值的结点
struct ListNode *max = maxNode(head);
printf("max node val = %d\n", max->val);
// 释放链表内存
while (head != NULL) {
p = head;
head = head->next;
free(p);
}
return 0;
}
```
上述代码中,我们首先定义了一个结点结构体 ListNode,包含一个整型成员变量 val 和一个指向下一个结点的指针成员变量 next。然后,我们通过 maxNode 函数遍历整个链表,找出具有最大值的结点,并返回该结点的地址。最后,我们在 main 函数中创建一个单链表,调用 maxNode 函数找出最大值结点,并释放链表内存。
阅读全文