利用單鏈表表示一個整數序列,通過一趟遍歷在單鏈表中確定值最大的結點。
多組數據,每組數據有兩行,第一行為鏈表的長度n,第二行為鏈表的n個元素(元素之間用空格分隔)。當n=0時輸入結束。
對於每組數據分別輸出一行,輸出每個鏈表的最大值。
5 10
思路:函數:創建鏈表,最大值(循環)
#include<iostream>
using namespace std;
typedef struct LNode
{
int data;//數據域
LNode *next;//指針域
}*LinkList;
void Create(LinkList &L,int n)//后插法創建鏈表
{
L=new LNode;
L->next=NULL;
LinkList p,r=L;
for(int i=0;i<n;i++)
{
p=new LNode;
p->next=NULL;
r->next=p;
cin>>p->data;
r=p;//尾指針移動到p
}
void Max(LinkList &L)①
{
LinkList p=L->next;
int MAX=p->data;
while(p->next)
{
if(p->next->data > MAX)
MAX=p->next->data;//后一個比MAX大就將后一個的值賦予MAX
p=p->next;
}
cout<<MAX<<endl;
}
int main()
{
LinkList L;
int n=0;
while(1)
{
cin>>n;//輸入數據個數
if(n==0)
break;//如果輸入為0結束
Create(L,n);
Max(L);
}
return 0;
}
①MAX還有其他寫法
void Max(LinkList &L)
{
LinkList p=L->next,pmax=L->next;
while(p)
{
if(p->data > pmax->data)
pmax=p;
p=p->next;
}
cout<<pmax->data<<endl;
}