//群:970353786
#include<iostream>
using namespace std;
typedef struct LNode //定义结构
{
int data; //数据
struct LNode* next; //指针
}LNode, * LinkList;
void InitList(LinkList& L, int n) //创建链表
{
L = new LNode; //分配内存
L->next = NULL; //处理指针域
LinkList p = L; //p指向尾结点

while (n--) //尾插法
{
LinkList q = new LNode; //生成新结点
cin >> q->data; //输入数据
q->next = NULL; //处理指针域
p->next = q; //将结点q插在结点p后面
p = q; //更新指针p,指向新的尾结点q
}
}

int Max(LinkList L) //L指向首元结点,递归求解最大值
{
if (L->next == NULL) //若下一个结点为空,则最大值就是本身
return L->data;
else
return L->next->data > Max(L->next) ? L->next->data : Max(L->next);//两两比较找最大值1 2 5 4
}
int main()
{
int n;
cout << "请输入数据个数:";
while (cin >> n && n !='n')//当n=0时输入结束。
{
LinkList L; //定义LinkList类型的链表L
cout << "请输入不同大小的数据:";
InitList(L, n); //创建链表L
// cout << "最大值序号为:";
// cout << next;
cout << "最大值为:";
cout << Max(L) << endl; //递归求解最大值
}
return 0;
}