文档详情

C语言程序设计专项训练题之-单链表.docx

发布:2025-01-18约1.86万字共26页下载文档
文本预览下载声明

计算机等级考试二级C语言程序设计

专项训练题——单链表

一.程序填空题

1.给定程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun的功能是:将a、b、c三个结点链接成一个单向链表,并输出链表结点中的数据。

请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

#includestdio.h

typedefstructlist

{

chardata;

structlist*next;

}Q;

voidfun(Q*pa,Q*pb,Q*pc)

{

Q*p;

/**********found**********/

pa-next=___1___;

pb-next=pc;

p=pa;

while(p)

{

/**********found**********/

printf(%c,____2_____);

/**********found**********/

p=____3____;

}

printf(\n);

}

intmain()

{

Qa,b,c;

a.data=E;b.data=F;c.data=G;c.next=NULL;

fun(a,b,c);

return0;

}

2.给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。

请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

#includestdio.h

#includestdlib.h

#defineN8

typedefstructlist

{

intdata;

structlist*next;

}SLIST;

SLIST*creatlist(int*a);

voidoutlist(SLIST*);

voidfun(SLIST*h,int*n)

{

SLIST*p;

/**********found**********/

___1___=0;

p=h-next;

while(p)

{

(*n)++;

/**********found**********/

p=p-___2___;

}

}

intmain()

{

SLIST*head;

inta[N]={12,87,45,32,91,16,20,48},num;

head=creatlist(a);

outlist(head);

/**********found**********/

fun(___3___,num);

printf(\nnumber=%d\n,num);

return0;

}

SLIST*creatlist(inta[])

{

SLIST*h,*p,*q;

inti;

h=p=(SLIST*)malloc(sizeof(SLIST));

for(i=0;iN;i++)

{

q=(SLIST*)malloc(sizeof(SLIST));

q-data=a[i];p-next=q;p=q;

}

p-next=0;

returnh;

}

voidoutlist(SLIST*h)

{

SLIST*p;

p=h-next;

if(p==NULL)printf(ThelistisNULL!\n);

else

{

printf(\nHead);

do

{

printf(-%d,p-data);

p=p-next;

}while(p!=NULL);

printf(-End\n);

}

}

3.给定程序中,函数fun的功能是:计算出带头结点的单向链表中各结点数据域之和作为函数值返回。

请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。

显示全部
相似文档