C语言二级问题,创建fun函数寻找链表中成绩最大的输出。关于指针的使用double max; STREC *p=h;不明白
发布网友
发布时间:2022-05-11 04:19
我来回答
共2个回答
热心网友
时间:2024-02-09 04:06
double fun( STREC *h ) {
double max;
STREC *p = h->next; // 因为h链表是有头结点的,所以h->next是第一个数据结点
max = p->s; // max中保存第一个结点的数据
p = p->next; // p指向第二个结点
while(p != 0) { // 遍历余下结点
if(p->s > max) max = p->s; // 如果p->s更大,送max保存
p = p->next; // 指向下一个结点
}
return max; // 返回最大值
}
热心网友
时间:2024-02-09 04:07
1.main()函数的double max和fun()函数的max不同,一个全局变量一个局部变量(这个不明白你继续百度吧),互不影响。
h=creat(s); max=fun(h);
h指向创建的链表的表头,进入fun(h)函数看看
double fun( STREC *h )
{double max;
STREC *p=h;
max=h->s;
p=p->next;
while(p!=0)
{if(p->s>max)
max=p->s;
p=p->next;
}
return max;
}
这里max=h->s为链表第一个数据的值,return max;返回的为链表最大的值,即函数max=fun(h);调用的返回值
2.typedef struct slist STREC;这个是typedef定义,STREC相当于struct slist,即STREC *p=h;相当于struct slist *p=h;p在这里初始化指向链表头,p是指针,类型为struct slist *
不知道这样说你明白不。