问答题
N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:找出学生的最高分,由函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
#include <stdlib.h>
#define N 8
struct slist
{ double s;
struct slist *next;
};
typedef struct slist STREC;
double fun(STREC *h)
{
}
STREC * creat (double *s)
{
STREC *h, *p, *q;
int i=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->s=0;
while(i<N)
/*产生8个节点的链表,各分数存入链表中*/
{q=(STREC*) malloc(sizeof(STREC));
p->s=s[i]; i++; p->next=q; p=q;
}
p->next=0;
return h; /*返回链表的首地址* /
}
outlist (STREC *h)
{
STREC *p;
p=h->next;
printf("head");
do
{printf("->%2.0f ",p->s);p=p->next;}
/*输出各分数* /
while (p!=0);
printf("\n\n ");
}
main()
{
double s[N]={85,76,69,85,91,72,64,87},
max;
STREC *h;
h=creat(s);
outlist(h);
max=fun (h);
printf("max=%6.1f\n ",max);
}
【参考答案】
double fun(STREC *h) { double max=h->s; while(h!=NULL) ......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)