(48)~(50)以下程序的功能足:建立一个带有头结点的甲—向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请从与下划线处号码对应的一组选项中选择出正确的选项。
#include <stdlib.h>
struct node
char data; struct node *next: ;
(48) CreatList(char *s)
struct node *h,*p,*q;
h = (struct node *)malloc sizeof(struct node));
p=q=h;
while(*s! =’\0’)
p = (struct node *)malloc(sizeof (struct node));
p->data = (49) ;
q->next = p;
q - (50) ;
S++;
p->next=’\0’;
return h;
main()
char str[]="link list";
struct node *head;
head = CreatList(str);
A.p->next
B.p
C.s
D.s >next
参考答案:B
解析: 主函数中,定义了一个结构体型指针变量head,然后将函数CreatList()的返回值赋给指针变量head,从这里可知函数 CreatList()的返回值为struct node*类型,所以第48处的空格处应该填struct node*,故48题选项C正确;在函数CreatList()中首先定义三个结构体型指针变量b,p和q。然后调用malloc()函数分配了一个结点空间,并让指针h指向它,开始指针p、q和h都指向它,然后调用一个while循环语句,当到达字符串数组s的末尾结束循环,在每次循环中,分配一个结点空间,并让p指向它,然后让该结点的data域的值等于字符串指针s所指的值,故49处的空格处应填*s,因此第49题的正确的答案为选项A;接下来让指针q所指结点的指针城指向结点p,然后让指针q指向该指针的所指结点的下一个结点即p,所以第50个空格处应该填p,因此第50题应该选择B。所以48题4个选项中选项C符合题意:第49题4个选项中选项A符合题意;第50题4个选项中选项 B符合趣意。