以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请从与下划线处号码对应的一组选项中选择出正确的选项。   #include <stdlib.h>   struct node   { char data; s

admin2010-01-10  61

问题 以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请从与下划线处号码对应的一组选项中选择出正确的选项。
  #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

答案2

解析 在主函数中,定义了一个结构体型指针变量head,然后将函数CreatList()的返回值赋给指针变量head,从这里可知函数CreatList()的返回值为struct node*类型,所以第48处的空白应该填struct node*,故48题选项C正确;在函数Creat List()中首先定义3个结构体型指针变量h,p和q。然后调用malloc()函数分配了一个结点空间,并让指针h指向它,开始指针p、q和h都指向它,然后调用一个while循环语句,当到达字符串数组s的末尾结束循环,在每次循环中,分配一个结点空间,并让p指向它,然后让该结点的data域的值等于字符串指针s所指的值,因此第49题的正确答案为选项A:接下来让指针q所指结点的next指针指向结点p,然后让指针q指向该指针的所指结点的下一个结点即p,所以第50个空白处应该填p,选择B。故第48题4个选项中选项C符合题意;第49题4个选项中选项A符合题意;第50题4个选项中选项B符合题意。
转载请注明原文地址:https://jikaoti.com/ti/d6I0FFFM
0

最新回复(0)