问答题 下列给定程序中,函数fun的功能是:在带头结点的单向链表中,查找数据域中值为eh的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序:#include<stdio.h>#include<stdlib.h>#define N 8typedef struet list int data; struet list*next;}SLIST;SLIST*creatlist(char*);void ouflist(SLIST});int fun(SLIST*h,char ch){ SLIST*P;int n=0; P=h一>next;/******found******/while(P!=__1__){ n++: if(P一>data:=ch)/******found******/ return __2__; else P=P一>next: } return 0;}main()i SLIST$head:int k;char eh; chae:a[N]=;‘m’,‘P’,’g‘,’a’,‘w’; ‘x’.‘r’,‘d’;; head:creatlist(a); outhst(nead); printf(“Enter a letter:”); scanf(“%c,&chj: k:fun(___3___); if (k==0) prinff(“\nNot found!\n”); else onnff(The sequence number is:%d\n”,k):}SLIST*creatlist(char*a){ SLIST*h,*P,*q;int i;h=P=(SLIST*)malloe(sizeof(SLIST));for(i=0;i<N;i++){ q=(SLIST*)malloc(sizeof(SLIST)); q一>data=a[i]; P一>next=q; p=q;}P一>next=0:return h:}void outlist(SLIST*h){SLIST*p;P=h一>next;if(P==NULL) prinff(“\nThe list is NULL!\n”); else { printf(“\nHead”); do { prinff(“一>%c”,P一>data); P=p一>next; }while(P!=NULL); printf(“一>End\n”); }}
【正确答案】正确答案:(1)NULL (2)n (3)llead,ch
【答案解析】解析:本题考查:链表相关知识;while循环语句;函数返回值。 填空1:while循环语句判断是否到达链表结尾,链表结尾结点指针域是NULL。 填空2:若找到指定字符,则通过return语句将该结点在链表的顺序号返回给main函数。 填空3:函数调用语句,其形式是:函数名(实际参数表),因此根据函数定义语句,填入:heaqd,ch。