用C语言编写单链表最大结点,最后程序显示 单链表(,是程序哪里出错了,可以给指点一下吗

img


程序是这个:


```#include<iostream>
using namespace std;
typedef int Elemtype;
typedef struct LNode
{
    Elemtype data;
    struct LNode *next;
}LNode,*LinkList;
//尾插法
void CreateList(LinkList &L,int n)
{
    LNode *p;int i;
    LNode *r;
    L=new LNode;
    L->next=NULL;
    r=L;
    for(i=0;i<n;++i)
    {
        p=new LNode;
        cin>>p->data;
        p->next=NULL;r->next=p;
        r=p;
    }
}
//输出整个单链表
void display(LinkList L)
{ LNode *p;
p=L->next;
cout<<"(";
while(p);
{ cout<<p->data<<" ";
p=p->next;}
cout<<")"<<endl;
}
//找最大值
int MaxList(LinkList L,Elemtype &e)
{
    LNode *p;
    p=L->next;
    e=p->data;
    while(p->next)
    {if((p->next->data)>e)
    e=p->next->data;
    p=p->next;
    }
    return e;
}
//主函数
int main()
{
    LinkList L;int n;Elemtype e;int max;
    cout<<"请输入需要创建单链表A的长度: "<<endl;
    cin>>n;
    cout<<"请依次输入需要存入的数据(尾插法): "<<endl;
    CreateList(L,n);
    cout<<"单链表L为: ";
    display(L);
        max=MaxList(L,e);
    cout<<"最大值为: "<<max<<endl;
    return 0;
}

while(p);后面的分号去掉啊
由于分号存在,while(p);是独立语句,无循环体的while循环,由于p不是空,所以成死循环了。