问答题
给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<stdlib.h>3 typedef struct aa4 {int data; struct aa *next;} NODE;5 int fun(NODE *h)6 { int sum=0;7 NODE *p;8 /**********found**********/9 p=h;10 while(p)11 { if(p->data%2==0)12 sum+=p->data;13 /**********found**********/14 p=h->next;15 }16 return sum;17 }18 NODE *creatlink(int n)19 (NODE *h,*p,*s;20 int i;21 h=p=(NODE*)malloc(sizeof(NODE));22 for(i=1;i<=n;i++)23 {s=(NODE *)malloc(sizeof(NODE));24 s->data=rand()%16;25 s->next=p->next;26 p->next=s;27 p=p->next;28 }29 p->next=NULL;30 return h;31 }32 outlink(NODE *h,FILE *pf)33 {NODE *p;34 p=h->next;35 fprintf(Pf,’’in\nTHE LIST:in\n HEAD’’);36 while(p)37 {fprintf(pf,’’->%d’’,p->data); p=p->next;}38 fprintf(pf,’’in’’);39 }40 outresult(int s,FILE *pf)41 { fprintf(pf,’’\nThe sum of even numbers:%d\n’’,s);}42 main()43 { NODE *head;int even;44 head=creatlink(12);45 head->data=9000;46 outlink(head,stdout);47 even=fun(head);48 printf(’’\nThe result:in’’); outresult(even,stdout);49 }
【参考答案】
正确答案:(1)p=h->next; (2)p=p->next;