为了确定单链表中值最大的结点,我们可以遍历链表,并跟踪当前最大值及其对应的结点。

以下是更新后的代码:

#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 函数中,我们用链表第一个结点的值和结点初始化 maxValmaxNode。然后,我们遍历链表的剩余部分,如果找到值更大的结点,就更新 maxValmaxNode。最后,我们返回值最大的结点的值。


原文地址: https://www.cveoy.top/t/topic/ph1I 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录