输入若干个不超过100的整数,建立单链表,然后通过一趟遍历在单链表中确定值最大的结点。输出该结点的值及其序号。
输入格式:
首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据在一行上输入数据个数n及n个不超过100的整数。
输出格式:
对于每组测试,输出单链表中值最大的结点的值和该结点的序号。输出格式如下:
“max=dmax num=dnum”
其中,dmax表示最大的结点的值,dnum表示最大的结点的值所在结点的序号。若有多个相同的最大值,则以首次出现的为准。
输入样例:
1
30 85 97 43 70 69 29 77 22 64 25 55 39 95 69 99 61 97 69 59 12 88 55 75 66 13 75 36 85 67 69
输出样例:
max=99 num=15
代码示例如下:
#include<iostream>
using namespace std;
typedef int elemtype;
struct LNode{
elemtype data;
elemtype num;
LNode *next;
};
struct LinkList{
LNode *head;
void create(int n);
void traverse();
};
void LinkList::create(int n)
{
head=new LNode;
head->next=NULL;
LNode *q=head;
for(int i=0;i<n;i++){
LNode *p=new LNode;
cin>>p->data;
p->num=i;
p->next=q->next;
q->next=p;
q=p;
}
}
void LinkList::traverse(){
LNode *p=head->next;
int max = p->data;
int index = p->num;
while(p){
if(max < p->data){
max = p->data;
index = p->num;
}
p=p->next;
}
cout<<"max="<<max<<" num="<<index+1;
}
int main(){
int T;
cin>>T;
while(T--){
int n;
cin>>n;
LinkList a;
a.create(n);
a.traverse();
cout<<"\n";
}
}