N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。 请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。c语言编程【22题】

来源:互联网 发布:淘宝咬鲜花表情 编辑:程序博客网 时间:2024/05/17 15:05
#include <stdio.h>#include <stdlib.h>//malloc()函数头文件#define   N   8struct  slist{  double   s;//s存放数据   struct slist  *next;};typedef  struct slist  STREC;//STREC是结构体的名字double  fun( STREC *h  ){STREC *p;double max;p = h->next;    max = p->s;while(p->next!=0){if(p->s > max){max = p->s;}p=p->next;//p指向下一节点}return max;}/*  创建一个有头结点、尾结点、并且能够给各节点赋值的单向链表  */STREC * creat( double *s)//指针函数,返回值是指向结构体类型的函数{ STREC  *h,*p,*q;// 指针*h 指向数值为 0 的头结点并且数值保持不变,指针*p一直移动负责连接各模块,*q一直动态创建链表int  i=0;h=p=(STREC*)malloc(sizeof(STREC));p->s=0;//赋初值swhile(i<N){ q=(STREC*)malloc(sizeof(STREC));q->s=s[i];//将一维数组是s[N]的值赋给qi++; p->next=q;//p指向下一节点p=q;//释放q,让q可以再次创建新的链表节点}p->next=0;//尾结点置0或者置为( NULL )空值return  h;//返回首地址h,相当于返回了一个带头结点的单链表}outlist( STREC *h)// h = creat( s );所以 h 表示刚刚创建的链表{ STREC  *p;p=h->next;//准备遍历整个链表printf("head");do{ printf("->%2.0f",p->s);//对单链表遍历,逐个打印p=p->next;}while(p!=0);//当p没有指向尾结点 0 时,一直执行do 循环操作printf("\n\n");}main(){  double  s[N]={85,76,69,85,91,72,64,87}, max;STREC  *h;//创建链表头结点 h ,h=creat( s );//完善链表outlist(h);//打印整体链表max=fun( h );//取出数据最大值printf("max=%6.1f\n",max);}
阅读全文
0 0
原创粉丝点击