首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考
给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考
admin
2015-06-08
72
问题
给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANKl.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#define N 8
typedef struct list
{ int data;
struct list *next;
}SLIST ;
Void fun(SLIST *P)
{SLIST *t,*s;
t=P一>next;S=P;
while(t一>next!=NULL)
{ s=t;
/**********found***********/
t=t一> ___1____ ;
}
/**********found***********/
printf(“%d”,____2____ );
s一>hext=NULL;
/**********found***********/
free( ___3____ );
}
SLIST * creatlist(int *a)
{SLIST *h,*P,*q;int i ;
h=p=(SLIST*)malloc(sizeof(SLIST));
for(i=0; i
{q=(SLIST *)malloc(sizeof(SLIST));
q一>data=a
;P一>next=q; P=q;
P一>next=0 ;
return h;
}
void outlist(SLIST *h)
{ SLIST *P;
P=h一>next ;
if(p==NULL)printf(“\nThe list
is NULL!\n”);
else
{printf(“\nHead”);
do{printf(“一>%d”,P一>data);
p=p一>next;)while(P!=NULL);
printf(“一>End\n”);
}
}
main()
{SLIST *head;
int a[N]={11,12,15,18,19,22,25,
29);
head=creatlist(a);
printf(“\nOutput from head:\n”);
outlist(head);
printf(“\noutput from tail:\n”);
while(head一>next!=NULL){
fun(head);
printf(“\n\n”);
printf (“\nOutput from head
again:\n”);outlist(head);
}
}
选项
答案
(1)next (2)t一>data (3)t
解析
fun函数的功能是输出链表尾部结点中的数据,并释放该结点,使链表缩短。由于链表是单向的,找到链表尾部结点需要利用循环从头结点开始查找,直至找到最后一个,找到之后输出尾部结点的数据,然后删除尾结点。
[解题思路]
第一空:fun函数中的循环“while(t->next!=NULL)”目的是找到尾结点,利用结点变量s和t,s指向当前节点,t不断指向下一个结点,因此第一空处应该是“t=t->next;”。
第二空:这里是输出尾结点中的数据,已经利用循环找到了尾结点t,t的数据是t->data,因此第二空处应该为“printf(“%d”,t->data);”。
第三空:输出尾结点数据之后删除尾结点,使用free,又因为尾结点是t,因此第:三空处应该为“free(t);”。
转载请注明原文地址:https://kaotiyun.com/show/RaJp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
下面程序的输出结果是______。main(){charstr[10],c=’a’;inti=0;for(;i<5;i++)str[i]=C++;printf("%s",str);}
有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;}程序在执行了c=&b;b=&a;语句后,表达式**c的值是______。
下面invert函数的功能是将一个字符串str的内容颠倒过来。请填空。 #include<string.h> voidinvert(charstr[]) {inti,j【】; for(i=0,j=strlen(str)
下面函数用来求出两个整数之和,并通过形参传回两数相加之和值。请填空。 intadd(intx,inty,【】,) {【】=x+y;}
以下程序的输出结果是_______。main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);
下面程序的输出结果是_______。unionun{inta[4];longb;charc[6];}main(){unionunu;printf("%d%d",s
请选出以下程序的输出结果_______。#include<stdio.h>sub(int*s,inty){staticintt=3,y=s[t];t-;}main(){inta[]={
设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是_______。
请读程序:#include<stdio.h>main(){inta,b;for(a=1,b=1;a<=100:a++){if(b>=20)break;if(b%3=1
以下函数用来求出两整数之和,并通过形参将结果传回,请填空。voidfunc(intx,inty,【】z){*z=x+y;}
随机试题
我国形成了九品三十等的官僚等级制度的时代是()。
Youcannotbe______carefulwhenyoudriveacar.
张三酒后与李五发生争吵,随后两人互相殴打,均受轻伤。县公安局认为张三首先挑起事端,应负主要责任,对其拘留8天,同时责令其拿出500元作为李五的医药费。张三向市公安局申请复议,市公安局作出了维持的复议决定。张三随后向县法院提起行政诉讼,其律师提醒他可以提起行
冯某对市房管局向孙某核发房屋所有权证的行为不服,以自己是房屋所有权人为由请求法院判决撤销某市房管局的发证行为。冯某向法院提交了房屋所有权证,孙某向法院提交了该房屋买卖合同,市房管局向法院提交了孙某的房屋产权登记申请、契税完税证等证据。下列哪一说法是正确的?
下列函数中,()不是微分方程y"-4y’+3y=0的解。
编制监理规划的时间是()。
(2013年)关于社会保险行政复议的说法,错误的是()。
警察发现90%的偷盗发生在没有报警系统的房屋。于是警察得出结论,在C城市,报警系统的存在对偷盗起了威慑作用。警察的结论预先假设了什么?
人民法院审理行政案件过程中,发现地方规章与部门规章不一致时,应当选择下列哪种做法?()
Thefollowingparagraphsaregiveninawrongorder.Youarerequiredtoreorganizetheseparagraphsintoacoherentarticleby
最新回复
(
0
)