头歌实训:单链表最大值
任务描述
本关任务:给定一个不带附加头结点的单链表L,返回单链表中最大值结点的指针。
编程要求
根据提示,在右侧编辑器补充完成函数LinkNode *findMaxNode(LinkNode *L)代码,返回单链表L中最大值结点的指针。
测试说明
平台会对你编写的代码进行测试:
测试输入:
5
3 7 9 2 8
预期输出:
最大值: 9
开始你的任务吧,祝你成功!
源代码:
#include <bits/stdc++.h>
using namespace std;
#include "linklist.h" //包含单链表基本运算及实现
/**
* 递归求单链表最大值。
* L为不带附加头结点的单链表的头指针。
* 返回值:指向具有最大值的结点的指针。
*/
LinkNode *findMaxNode(LinkNode *L)
{
//请在下面填写代码
/**********************Begin**********************/
LinkNode *p = L->next; //p指向L的后继节点
if(p) //当L不是最后一个节点的时候
{
if(L->data > p->data) //这个保证最大的元素会到最后
{
p->data = L->data;
}
return findMaxNode(L->next); //递归到L的下一个节点
}
return L; //L为最后一个节点返回
/***********************End***********************/
}
//请勿改动下面的代码
int main(int argc, char *argv[])
{
int n;
cin >> n; //输入n
int *a = new int[n]; //申请长度为n的数组
for (int i = 0; i < n; i++)
cin >> a[i];
LinkNode *L = NULL;
CreateList(L, a, n);
// DispList(L);
LinkNode *ptr_max = findMaxNode(L);
if (ptr_max)cout << "最大值: " << ptr_max->data << endl;
else cout << "error\n";
delete[] a; //释放数组
return 0;
}

607

被折叠的 条评论
为什么被折叠?



