我必须创建一个包含 10 个节点的链表,每个节点都有一个 double 值。 然后我必须在这个链表中搜索链表中的最大值,并显示结果。 该程序从用户那里获取每个节点的值。 下面是我遍历列表的方法,试图找到最大值。
定位最大的元素。我想这就是我的问题所在。
struct node *ptr = head;
double largest = 0.0;
while (ptr != NULL)
{
if (ptr->val > largest)
largest = ptr->val;
ptr = ptr->next;
}
printf("The largest value is %lf \n", largest);
程序输出:0.0000
我不知道为什么。
最佳答案
如果列表中的最大值小于 0.0,您编写的算法将不起作用。
更好的解决方案是定义一个“指向找到的最大节点的指针”,该指针最初为 NULL。
在循环中,如果此指针为 NULL,则“第一个条目始终是迄今为止最大的”。 (后面的节点可能会发现变大了。。。)
如果循环后指针为 NULL,则列表一定是空的。
关于c - 从链表中查找最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29776461/