设计一个算法,查找带头节点的非空单链表l中第一个最大节点(最大节点可能有多个),并返回该节点的逻辑序号。
时间: 2023-04-26 19:06:06 浏览: 171
3-2 试编写一个算法,在带表头结点的单链表中寻找第i个结点.doc
算法如下:
1. 定义一个变量max记录当前最大值,初始值为l的头节点的值,定义一个变量index记录当前最大值的逻辑序号,初始值为1。
2. 从l的第二个节点开始遍历整个链表,如果当前节点的值大于max,则更新max为当前节点的值,更新index为当前节点的逻辑序号。
3. 遍历完整个链表后,返回index即可。
代码实现如下:
int findMaxNode(ListNode* l) {
int max = l->val;
int index = 1;
ListNode* p = l->next;
while (p != NULL) {
if (p->val > max) {
max = p->val;
index = index + 1;
}
p = p->next;
}
return index;
}
阅读全文