c - 从链表中查找最大值

标签 c linked-list element traversal

我必须创建一个包含 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/

相关文章:

c - 随机数生成器

c++ - 简单的 C/C++ 网络 I/O 库

c - 在链表中插入节点

c++ - 使用 "delete this"删除当前对象是否可以?

c - 如何使用 qsort 对结构体数组中的数据进行排序 (C)

c - 如何创建提示

java - 从 ArrayList 或 LinkedList 中删除元素哪个更有效?

javascript - JScript 检查元素是否存在并删除它

android - 选择多个 kotlin 按钮并在 findViewById() 中使用变量 - android studio

检查元素无法识别 CSS 文件 - 谜团