输入若干个不超过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
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码:
#include<stdio.h>
#include<malloc.h>
typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*LinkList;
struct Lnode * create()
{
LinkList L;
L=(Lnode*)malloc(sizeof(Lnode));
Lnode *p,*r;
r=L;
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
p=(Lnode*)malloc(sizeof(Lnode));
scanf("%d",&p->data);
r->next=p;
r=p;
}
p->next=NULL;
return L;
}
void Lprintf(LinkList L){
Lnode *p ;
p=L->next;
if(p==NULL)
printf("NULL");
else{
while(p->next!=NULL){
printf("%d ",p->data);
p=p->next;
}
printf("%d",p->data);
}
}
int main(){
int n;
LinkList L;
scanf("%d",&n);
for(int i=0;i<n;i++){
L=create();
Lnode *p;
p=L->next;
int max,num,j;
j=0;max=p->data-1;
while(p!=NULL){
j++;
if(p->data > max){
max=p->data;
num=j;
}
p=p->next;
}
printf("max=%d num=%d\n",max,num);
}
return 0;
}