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