首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
admin
2019-03-06
61
问题
给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#define N 5
typedef struct node {
int data;
struct node *next;
} NODE;
____1____ fun(NODE *h)
{NODE *p,*q,*r;
p =h;
if (p == NULL)
return NULL;
q = p—>next;
p—>next = NULL;
while (q)
{
r = q—>____2____ ;
q—>next = p;
p = q;
q = ____3____ ;
}
return p;
}
NODE *creatlist (int a [ ] )
{NODE *h,*p,*q; int i;
h=NULL;
{ q= (NODE *) malloc (sizeof (NODE)) ;
q—>data=a
;
q—>next = NULL;
if (h == NULL) h= p = q;
else {p—>next = qf p = q; }
return h;
}
void outlist (NODE *h)
{NODE *p;
p=h;
if (p==NULL) printf("The list is
else
{ printf ("\nHead ") ;
cio
{ printf("—>%d",p—>data) ; p=p
—>next; }
while (p ! =NULL) ;
printf ( "—>End\n") ;
}
}
main ()
{NODE *head;
int a[N]={2,4,6,8,10};
head=creatlist (a) ;
printf ( " \nThe original list: \n") ;
outlist (head) ;
head=fun (head) ;
printf("\nThe list after
inverting: \n") ;
outlist (head) ;
}
选项
答案
(1) NODE* (2) next (3)r
解析
函数fun的功能是将不带头结点的单向链表逆置,链表的逆置从第二个结点开始,分别将结点的指针指向前一个结点便可完成单项链表的逆置。
第一空:主函数内fun函数调用形式是“head= fun(head); ”,变量head是NODE指针,故fun函数的返回值是NODE指针,即第一空处应为“NODE*”。
第二空:while循环完成链表的倒置,在循环体内,p、q和r指针分别指向三个连续的结点,p指针在最前,然后是q指针,r指针在最后。将q指针指向p结点,p和q两个结点倒置,然后p、q和r再往后移动一个结点,继续对其他结点逆置。因此第二空处r是q的后面一个结点,故第二空处为“next”。
第三空:由第二空的分析可知,第三空处是将q结点往后移动一个结点位置,故第三空处为“r”。
转载请注明原文地址:https://kaotiyun.com/show/ObRp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
以下选项中,当x为大于1的奇数时,值为0的表达式是
有如下程序:#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n",i);}该
执行以下程序后输出的结果是______。main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}
下列程序的输出结果为main(){unionu{char*name;intage;intincome;}ss.name="WANGLIONG";s.age=28;s.income=1
有以下函数intaaa(char*s){char*t=S;while(*t++);t--;return(t-s);}以下关于aaa函数的功能的叙述正确的是
下列程序执行输出的结果是______。#include<stdio.h>f(inta){intb=0;staticc=7;a=c++;b++;return(a);}main()
设二叉树如下:对该二叉树进行后序遍历的结果为【】。
下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不变,请填空。#include<stdio.h>main(){chara[]="labchmfye",t:int1,j;for(i=0;
随机试题
Somepeopleworryaboutmycollectingofthosefascinatingbirdsandanimalsthattheypaytoseeinthezoo.Oneofthequestio
A.痰滞于胃B.饮停于胃C.痰凝肌肤D.痰阻经络纳呆恶心,呕吐痰涎。为
某医院年终对全院职工的基本情况作调查了解,其中有以下情况:死亡一人,医生甲因病在家闲了接近2年,医生丙参与经营未从事医疗两年多,医生丁承包医院的第二门诊三年,其余大多数仍在医院坚持工作,依据执业医师法,下列人员中,属于应当注销注册,收回医师执业证书的是
有机整体的"主宰"是()
(2006年简答题)甲、乙、丙、丁四人共同投资设立A普通合伙企业。合伙协议的部分内容如下:由甲、乙执行合伙企业事务,丙、丁不得过问企业事务;利润和损失由甲、乙、丙、丁平均分配和分担。在执行合伙企业事务过程中,为提高管理水平,甲自行决定聘请王某担任合伙企业经
(2011年)2010年4月6日,甲公司为履行与乙公司的买卖合同,签发一张已经由本公司承兑的商业汇票交付乙公司,汇票收款人为乙公司,到期日为10月6日。4月14日,乙公司将该汇票背书转让给丙公司。9月8日,丙公司持该汇票向其开户银行Q银行办理贴现。该汇票到
周师傅在某单位工作,该单位周一到周五为工作日,周六周日双休。已知某年的8月1日是星期五,那么周师傅在该年8月一共需要出勤()天。
甲、乙、丙、丁四人的车分别是白、黑、红、蓝。在问到他们各自车的颜色时,甲:“乙的不是白色”,乙:“丙的是蓝色”,丙:“丁的不是红色”。丁:“甲、乙、丙三人的车有一个是蓝色,而且只有车的颜色是蓝色的这个人说了实话。”如果丁说的是实话,那么以下说法正确的是哪一
关于十九世纪七八十年代的“边疆危机”下列正确的表述有()
AnewstudypublishedinthejournalProceedingsoftheRoyalSocietyBbytheteamsofDr.GregoryWestandDr.VeroniqueBohbo
最新回复
(
0
)