(17) 以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回.请填空: #include
struct list { char data; struct list * next; }; struct list * creat()
{ struct list * h,* p,* q; char ch;
h=【22】 malloc(sizeof(struct list)); p=q=h; ch=getchar(); while(ch!='?')
{ p=【23】 malloc(sizeof(struct list)); p->data=ch; p->next=p; q=p;
ch=getchar(); }
p->next='\\0'; 【24】
(18) 下面min3函数的功能是:计算单向循环链表first中每3个相邻结点数据域中值的和,返回其中最小的值。请填空。
struct node {int data; struct node * link;}; int min3(struct node * first) { struct node *p=first;
int m,m3=p->data+p->link->data+p->link->link->data; for(p=p->link; p! =first; p= 【25】 ) int m,m3=p->data+p->link->data+p->link->link->data; { m=p->data+p->link->data+p->link->link->data; if( 【26】 ) m3=m;} return(m3);}
(19) 若有以下说明和定义语句,则变量w在内存中所占的字节数是 【27】 。 union aa { float x, y; char c[6]; };
struct st { union aa v; float w[5]; double ave; } w;
(20) 为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是向结点的指针域),请填空。 data next
struct link { char data; 【28】 } node;
(21) 以下程序建立了一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data 域不放数据,表空的条件是ph->next = = NULL). #include
struct list { int data;struct list *next;}; 【29】 creatlist()
{ struct list *p,*q,*ph; int a;
ph=(struct list *) malloc(sizeof(struct list));
p=q=ph; printf(\–1 to end:\\n\ scanf(\ while(a!=-1)
{ p=(struct list *)malloc(sizeof(struct list));
p->data=a; q->next=p; 【30】 =p; scanf(\p->next='\\0'; return(ph); } main()
{ struct list *head; head=creatlist();}
答案: 一、选择题:
01) C 02) D 03) A 04) B 05) C 06) C 07) D 08) C 09) D 10) C
11) A 12) B 13) B 14) A 15) C 16) B 17) B 18) B 19) A 20) B
21) A 22) D 23) B 24) B 25) 26) D 27) B 28) A 29) D 30)
31) C 32) D 33) D 34) B 35) 36) B 37) D 38) C 39) A 40)
41) B 42) C 43) B 44) A 45) 46) B 47) B 48) B 49) A 50)
51) B 52) B 53) D 54) D 55) 56) C 57) C 58) C 59) A 60)
二、填空题: (1) 5
(2) 13431
(3) 2002Shangxian
(4) sizeof(struct node )
(5) x,link=&z或x.link=y.ink (6) 80
(7) struct node *
(8) Struct STRU*
(9) Struct STRU
C B C B D D B D (10) struct st 或ex (11) 22 (12) 10 (13) 4 (14) 5 (15) 2
(16) struct list *next
(17) int data
(18) (*b).day
(19) b->day
(20) char *data
(21) struct link *next
(22) (struct list *)
(23) (struct list *)
(24) return(h); 或 return h;
(25) p->link
(26) mm或m<=m3或m3>=m (27) 34
(28) struct link *next
(29) struct list * (30) q