编写一个函数完成如下功能:通过一趟遍历找出长度为n的单链表中值最大的节点。
要求,在主函数中调用上面的函数测试。
提示:还需要定义其他函数,比如初始化链表,构造单链表,输出单链表。
输出结果:
代码展示:
#include<iostream>
using namespace std;
//定义单链表
typedef struct LNode
{
int data;
struct LNode* next;
}LNode, * LinkList;
//初始化单链表
int InitList(LinkList& L)
{
L = new LNode;
L->next = NULL;
return 0;
}
//构造单链表
int ConsList(LinkList& L)
{
cout << "请输入赋值的个数:";
int n;
cin >> n;
cout << "请输入链表的值:";
LinkList r = L;
for (int i = 0; i < n; i++)
{
LinkList p = new LNode;
cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
}
return 0;
}
int printf(LinkList L)
{
LinkList p = L->next;
while (p)
{
cout << p->data;
p = p->next;
}
return 0;
}
int GetMax(LinkList L)
{
LinkList p = L->next;
int max = p->data;
int count = 0;
int index = 0;
while (p)
{
count++;
if (p->data > max) {
max = p->data;
index = count;
}
p = p->next;
}
cout << "链表中值最大的结点是第" << index << "个结点,值为:" << max << endl;
return max;
}
int main()
{
LinkList L;
InitList(L);
ConsList(L);
GetMax(L);
return 0;
}