填空题
在给定程序中,函数fun的功能是:将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构。 文件BLANK1.C内容如下: #include<stdio.h> #include<stdlib.h> #define N 5 typedef struct node int data; struct node *next; NODE; /**********found**********/ (1) fun(NODE *h) NODE *p,*q,*r; p=h; if(p==NULL)return NULL; q=p->next: p->next=NULL; /**********found**********/ while( (2) ) r=q->next; q->next=p; p=q; /**********found**********/ q= (3) ; return p; NODE *creatlist(int a[]) NODEh,*p,*q; int i; h=NULL; for(i=0;i<N;i++) q=(NODE%)malloc(sizeof(NODE)); q->data=a[i]; q->next=NULL; if(h==NULL)h=p=q; else p->next=q;p=q; return h; void outlist(NODE *h) NODE *p; p=h; if(p==NULL)printf("The list is NULL!\n"); else printf("\nHead"); do printf("->%d",p->data); p=p->next; while(p!=NULL); printf("->End\n"); void main( ) NODE *head; int a[N]=2,4,6,8,10; head=creatlist(a): printf("\nThe original list: \n"); outlist(head); head=fun(head); printf("\nThe list after inverting: \n"); outlist(head);
【参考答案】
r
点击查看答案&解析
热门
试题
问答题
在主函数中已将N名学生的成绩放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,它的功能是:求出平均分,由函数值返回。 例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78.625。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 文件PROG1.C内容如下: #include<stdio.h> #include<stdlib.h> #define N 8 struct slist double s ; struct stist * next; ; typedef struct slist STREC; double fun(STREC * h ) STREC * creat( double * s) STREC * h, * p, * q; int i=0; h = p = (STREC * ) malloe (sizeof( STREC )); p->s=0; while(i<N) q=(STREC * ) malloe ( sizeof( STREC ) ) ; q->s=s[i] ; i++; p->next = q ; p=q; p->next = 0 ; return h ; void outlist (STREC * h) STREC * p ; p = h->next ; prinff( head ) ; do prinff( ->% 4.1f , p->s) ; p=p->next; while(p! =0); printf( n n ) ; void main( ) double s[N]=85,76,69,85,91,72,64,87,ave; STREC * h ; h=creat( s ); outlist (h) ; ave=fun( h ); prinff( ave= %6.3f n ,ave) ;
点击查看答案&解析