C语言单链表最大值查找算法:递归实现
/* 求单链表值最大的结点 / int getMaxNode(LinkNode head) { if (head == NULL) return INT_MIN; int first = head->data; int m = getMaxNode(head->next); if (m > first) return m; else return first; }
该代码通过递归方式找到单链表中的最大值。
算法思路:
- 首先判断链表是否为空,如果是则返回最小值 INT_MIN。
- 否则,获取头结点的值 first。
- 递归调用 getMaxNode 函数,获取链表剩余部分的最大值 m。
- 比较 first 和 m,返回两者中较大的值。
代码解释:
getMaxNode(LinkNode* head)函数接受一个指向链表头结点的指针作为参数。if (head == NULL)语句用于判断链表是否为空,如果是则返回 INT_MIN。int first = head->data;获取头结点的值 first。int m = getMaxNode(head->next);递归调用函数,获取链表剩余部分的最大值 m。if (m > first)语句用于比较 first 和 m,返回两者中较大的值。
示例:
假设有一个单链表,其元素值为 [1, 3, 2, 4, 5]。调用 getMaxNode(head) 函数后,将返回 5。
原文地址: https://www.cveoy.top/t/topic/bwvc 著作权归作者所有。请勿转载和采集!