C++ 查找单链表中最大值节点
为了确定单链表中值最大的结点,我们可以遍历链表,并跟踪当前最大值及其对应的结点。
以下是更新后的代码:
#include <iostream>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*linkList;
void CreateList_R(linkList &L,int n)
{
L->next=NULL;
linkList r=new LNode;
r=L;
for(int i=0;i<n;i++)
{
linkList p=new LNode;
cin>>p->data;
p->next=NULL;
r->next=p;
r=p;
}
}
int MaxData(linkList L)
{
int maxVal = L->next->data; // 假设第一个结点的值最大
linkList maxNode = L->next; // 假设第一个结点是值最大的结点
linkList p = L->next;
while(p != NULL)
{
if(p->data > maxVal)
{
maxVal = p->data;
maxNode = p;
}
p = p->next;
}
return maxNode->data;
}
int main()
{
int n;
while(cin>>n)
{
if(n==0) break;
linkList L=new LNode;
CreateList_R(L,n);
cout<<MaxData(L)<<endl;
}
return 0;
}
在 MaxData 函数中,我们用链表第一个结点的值和结点初始化 maxVal 和 maxNode。然后,我们遍历链表的剩余部分,如果找到值更大的结点,就更新 maxVal 和 maxNode。最后,我们返回值最大的结点的值。
原文地址: https://www.cveoy.top/t/topic/ph1I 著作权归作者所有。请勿转载和采集!