结构体与共用体及用户定义类型

(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

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4