使用VC++2010打开考生文件夹下blankl中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是在带头节点的单向链表中,查找数据域中值为ch的节点。找到后通过函数值返回该节点在链表中的序号;若不存在值为

admin2023-02-27  2

问题 使用VC++2010打开考生文件夹下blankl中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是在带头节点的单向链表中,查找数据域中值为ch的节点。找到后通过函数值返回该节点在链表中的序号;若不存在值为ch的节点,则函数返回0。
    请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
    注意:部分源程序给出如下。
    不得增行或删行,也不得更改程序的结构!
    试题程序:
1 #include<stdio.h>
2 #include<stdlib.h>
3 #define N 8
4 typedef struct list
5 {  int data;
6    struct list*next;
7 }SLIST;
8 SLIST*creatlist(char*);
9 void outlist(SLIST*);
10 int fun(SLIST*h,char ch)
11 {  SLIST*p;  int n=0;
12    p=h->next:
13  /*********found*********/
14  while(p!=<u>【1】</u>)
15  {  n++;
16  /*********found*********/
17    if(p->data=ch)
18    return<u>【2】</u>;
19    else p=p->next:
20    }
21    return 0;
22 }
23 main()
24 {  SLIST*head;int k;char ch;  char a[N]={'m','p','g','a','w','x',’r’,’d’};
25    head=creatlist(a);
26    outlist(head);
27    printf("Enter a letter:");
28    scanf("%c",&ch);
29  /*********found*********/
30  k=fun(<u>【3】</u>);
31  if(k==0)
32    printf("\nNot found!\n");
33    else
34    printf("The sequence number is:%d\n",k);
35 }
36 SLIST*creatlist(char*a)
37 (  SLIST*h,*p,*q,int i,
38    h=p=(SLIST*)malloc(sizeof(SLIST));
39    for(i=0; i<N;i++)
40    {q=(SLIST*)malloc(sizeof(SLIST));
41    q->data=a;P->next=q;
42    p=q;
43    }
44    p->next=0;
45    return h;
46 }
47 void outlist(SLIST*h)
48 {  SLIST*p;
49    p=h->next;
50    if(p==NULL)
51    printf("\nThe list isNULL!\n");
52    else
53    {printf("\nHead");
54    do
55    {printf("->%c",
56    p->data);p=p->next;}
57    while(p!=NULL);
58    printf("->End\n");
59    }
60 }

选项

答案(1)NULL (2)n (3)head,ch

解析 填空1:while循环语句用来判断是否到达链表结尾,链表结尾节点指针域是NULL。故空1处应该填NULL。
    填空2:若找到指定字符,则通过return语句将该节点在链表中的序号返回给main()函数。节点的序号为n。故空2处应该填n。
    填空3:函数调用语句,其形式是函数名(实参列表),根据函数定义语句,故空3处应该填head,ch。  
转载请注明原文地址:https://kaotiyun.com/show/GD0D777K
0

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