用C语言,通过一趟遍历在单链表中确定值最大的结点。
以下是使用C语言实现在单链表中找到值最大的节点的示例代码:
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
/* 创建单链表 */
struct Node *createLinkedList(int n) {
struct Node *head = NULL, *prev = NULL;
for (int i = 0; i < n; i++) {
struct Node *node = (struct Node *)malloc(sizeof(struct Node));
printf("请输入第%d个节点的值:", i+1);
scanf("%d", &(node->data));
node->next = NULL;
if (prev == NULL) {
head = node;
} else {
prev->next = node;
}
prev = node;
}
return head;
}
/* 遍历单链表并找到最大值的节点 */
struct Node *findMaxNode(struct Node *head) {
struct Node *maxNode = head;
struct Node *p = head;
while (p != NULL) {
if (p->data > maxNode->data) {
maxNode = p;
}
p = p->next;
}
return maxNode;
}
/* 主函数 */
int main() {
int n;
printf("请输入单链表的长度:");
scanf("%d", &n);
struct Node *head = createLinkedList(n);
struct Node *maxNode = findMaxNode(head);
printf("值最大的节点是:%d\n", maxNode->data);
return 0;
}
运行结果:
请输入单链表的长度:5
请输入第1个节点的值:3
请输入第2个节点的值:6
请输入第3个节点的值:2
请输入第4个节点的值:8
请输入第5个节点的值:1
值最大的节点是:8
在上面的示例代码中,我们首先创建了一个单链表,然后使用 findMaxNode 函数遍历单链表并找到值最大的节点。在遍历过程中,我们使用 maxNode 变量来记录当前遍历到的最大值节点。如果当前节点的值比 maxNode 的值更大,我们就更新 maxNode 的值为当前节点。最后返回 maxNode 即可。
原文地址: https://www.cveoy.top/t/topic/zwZ 著作权归作者所有。请勿转载和采集!