c语言设计一个算法,通过一趟遍历在单链表中确定值最大的结点。
时间: 2023-12-03 09:44:16 浏览: 74
以下是 C 语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int value;
struct Node *next;
};
struct Node *findMaxNode(struct Node *head) {
struct Node *maxNode = head;
struct Node *currentNode = head;
while (currentNode != NULL) {
if (currentNode->value > maxNode->value) {
maxNode = currentNode;
}
currentNode = currentNode->next;
}
return maxNode;
}
int main() {
// 创建链表
struct Node *head = (struct Node *)malloc(sizeof(struct Node));
head->value = 1;
struct Node *node2 = (struct Node *)malloc(sizeof(struct Node));
node2->value = 5;
head->next = node2;
struct Node *node3 = (struct Node *)malloc(sizeof(struct Node));
node3->value = 3;
node2->next = node3;
node3->next = NULL;
// 找到值最大的结点
struct Node *maxNode = findMaxNode(head);
// 输出结果
printf("值最大的结点的值为:%d\n", maxNode->value);
// 释放内存
free(node3);
free(node2);
free(head);
return 0;
}
```
遍历单链表,用 `maxNode` 记录当前最大值的节点,从头到尾扫描链表,如果某个节点的值比 `maxNode` 的值大,则更新 `maxNode`,最后返回 `maxNode`。
阅读全文