描述
利用单链表表示一个整数序列,通过一趟遍历在单链表中确定值最大的结点。
输入
多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。
输出
对于每组数据分别输出一行,输出每个链表的最大值。
输入样例 1
5 2 1 3 5 4 6 2 3 10 4 5 1 4 -1 -2 -3 -4 0
输出样例 1
5 10 -1
#include<iostream>
#include<string>
#include<stdio.h>
#define OK 1
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;//结点的指针域
}LNode,*LinkList;
void InitList(LinkList &L)
{
L=new LNode;
L->next=NULL;
}
int FindMax(LinkList L) //通过一趟遍历确定最大值
{ if(L->next==NULL) return NULL;//健壮性 会报Warning
LinkList pmax=L->next; //pmax指向首元结点
LinkList p=L->next->next;
while(p!=NULL)
{
if(pmax->data<p->data)
pmax=p;
p=p->next;
}
return pmax->data;
}
int Input(LinkList &L)
{
int n;
while(cin>>n&&n!=0)
{
LinkList L=new LNode;
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;
}
cout<<FindMax(L)<<endl;
}
}
int main()
{
LinkList L;
InitList(L);
Input(L);
return 0;
}