N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:找出学生的最高分,由函数值返回。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填

admin2010-05-05  17

问题 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++; 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) /*通过循环找到最高分数*/ {if(max<h->s) max=h->s; h=h->next; } return max; }

解析 在本题中,h为一个指向结构体的指针变量,若要引用它所指向的结构体中的某一成员时,要用指向运算符“->”。由于是链表,所以要使h逐一往后移动,使用的是h=h->next。
转载请注明原文地址:https://kaotiyun.com/show/jXID777K
0

相关试题推荐
最新回复(0)