设计一个算法,通过一趟遍历在单链表中确定值最大的结点
时间: 2023-05-28 07:04:50 浏览: 223
数据结构算法
5星 · 资源好评率100%
算法思路:
1. 定义一个变量max记录最大值,初始值为链表头节点的值。
2. 定义一个指针p指向链表头节点。
3. 从头节点开始遍历链表,比较每个节点的值和max的值,如果当前节点的值比max大,则更新max的值。
4. 遍历完链表后,max就是值最大的节点的值。
5. 返回值最大的节点的指针或者节点的值。
算法实现:
```
ListNode* findMax(ListNode* head) {
ListNode* p = head;
int max = p->val;
ListNode* maxNode = p;
while (p != nullptr) {
if (p->val > max) {
max = p->val;
maxNode = p;
}
p = p->next;
}
return maxNode;
}
```
时间复杂度:O(n)。只需要遍历一遍链表即可。
阅读全文