网友您好, 请在下方输入框内输入要搜索的题目:
程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为头指针向链表的第—个结点。
若有以下程序段 q=s; s=s->next; p=s; while(p->next) p=p->next; P->next=q; q->next=NULL; 该程序段实现的功能是______。
A.首结点成为尾结点
B.尾结点成为首结点
C.删除首结点
D.删除尾结点
解析:根据语句q=s得知指针q指向结点a;由s=s->next;p=s得知指针p和s均指向接点b;在满足while语句的情况下,抽行p=p->next;得知p现在指向结点c;由p->next=q得知p指向的结点是a,a移到c的后面;由q->next=NULL得知结点a与结点b的指针断开。移动后的结构图如图所示:

以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是
A.main( ) { int *p; fun(p); ┆ } int fun(int *p) { int s; p=&s;}
B.main( ) { int *p; fun(&p); ┆ } int fun(int **p) { int s; *p=&s;}
C.#include<stdlib.h> main( ) { int *p; fun(&p); ┆ } int fun(int **p) { *p=(int*)malloc(2);}
D.#include<stdlib.h> main( ) { int *p; fun(p); ┆ } int fun(int *p) { p=(int*)malloc(sizeof(int));}
设线性链表中结点的结构为(data,next)。已知指针q所指结点是指针结点p的直接前驱,若在*q与*p之间插入结点*s,则应执行下列()操作。
A.s->next=p->next;p->next=s;
B.q->next=s;s->next=p;
C.p->next=s->next;s->next=p;
D.p->next=s;s->next=q;
以下程序段中,能够通过调用函数fun(),使main()函数中的指针变量p指向一个合法的整型单元的是( )。
A.main() {int*p; fun(p); … } int fun(int*p) {int s; p=&s; }
B.main {int*p fun(&p); … } iht fun(int**p) {int s; *p=&s;}
C.main() {int*p; fun(&p); } int fun(int**p) {*p=(int*)malloc(2);}
D.main() {int*p; fun(p); } int fun(int*p) {p=(int*)malloc(sizeo(int));}
解析:在选项A中,main()函数中定义了一个指针变量p,调用fun()函数时把p传给形参p,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元,故选项A错误。选项B中实现的也是让实参p,指向一个在函数fun()中定义的局部变量s,因此也是错误的;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节,因此,选项C是正确的;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数中分配了一个整型单元并把首地址赋值给行参指针变量p,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值,因此选项D也是错误的。所以,C选项为所选。
以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是______。
A.main() { int *p; fun(p); …… } int fun(int *p) {int s; p=&s;}
B.main() { int *p; fun(&p); …… } int fun(int **p) {int s; *p=&s;}
C.# include<stdlib. h> main() {int *p; fun(&p); …… } int fun(int **p) {*p=(int *)malloc(2);}
D.# include<stdlib. h> main() { int *p; fun(p); …… } int fun(int *p) {p=(int *)malloc(sizeof(int));}
解析:选项A和B中p指向局部变量s的地址,退出函数fun后,该局部变量也被释放,不能使p指向一个整型单元地址;选项D中通过malloc函数分配一个整型地址,但不能被返回到main函数中,因为指针参数指向的地址不能被改变;选项C中,p是指向指针的指针,函数fun改变的是其指向的内容,而不是其地址。
下程序中,能够通过调用函数 数中的指针变量 p 指向一个合法的整型单元的是 A) p; p); p) s; p=&s; B) p; p); *q) s; *q=&s; C) # p; p); *q) *q=(); D) # *p; p); p) p=(); 2003 年 4 月 45 题 注释: 这个题很有意思。考查了: 1) 指针的指针的使用 2) 动态内存分配与自动变量的内存分配。 动态分配的内存必须调用 函数才能释放,而自动变量一旦跳出它的代码作用范围,就会由编译器自动释放掉。 让我们先看: A) 选项无论 中 不会影响到主函数中 为它是值传递 B) 选项倒是把 函数,但遗憾的是,由于 s 是个自动变量,当推出 函数后, s 变量所占内存单元会被会被释放掉,此时主函数中的 p 还是没法指向一个合法的 单元 C) 选项 的形参 *p;表明 p 是个指向指针变量的指针变量,即是个指针的指针。 而主函数中的 p; 表明 &p, &参和形参类型一致。 的功能是使实参 变量, 又由于该 变量是由 动态分配的,所以推出 函数并不会影响实参 故C 是对 D) 选项犯了和 真想不到二 哈 !
在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行( )。
A.s→link=p→dink; p→link=s
B.p→link=s; s→link=q
C.p→link=s→4ink; s→link=p
D.q→link=s; s→link=p
解析:在单链表中插入一个元素需要执行以下步骤:首先将待插入节点的前驱结点的指针域指向待插入节点,然后将待插入节点的指针域指向待插入节点的前驱结点原先的后继节点。
在一个单链表中,q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行(29)。
A.s→link=p→link;p→link=s;
B.p→link=s;s→link=q;
C.p→link=s→link;s→link=p;
D.q→link=s;s→link=p;
解析:q结点是p结点的前驱结点,若在q与p之间插入结点s,只需先将q的指针指向s,然后再将s指向p即可。
以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是
A.main() { int *p; fun(p); … } int fun(int *p) { ints; p=&s;}
B.main() { int *p; fun(&p); … } int fun(int **p) { int s; *p=&s;)
C.#include main() { int *p; fun(&p); … } int fun(int **p) *p=(int*)malloc(2);}
D.#include main() { iht *p; fun(p); … } iht fun(iht *p) { p=(int*)malloc(sizeof(int)); }
解析:本题考核的知识点是指针变量作为函数的参数以及变量的作用域。在选项A中,main()函数中定义了一个指针变量p,调用fun()函数时把p传给形参p,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元,故选项A错误.选项B中实现的也是让实参p,指向一个在函数fun()定义的局部变量s,因此也是错误的;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节,因此,选项C是正确的;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数分配了一个整型单元并把首地址赋值给行参指针变量p,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值,因此选项D也是错误的.所以,C选项为所选。
以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是
A.main() { int*p; fun(p); … } int fun(int*p) {int s; p=&s; }
B.main { int *p; fun(&p); … } int fun(int**p) {int s; *p=&s; }
C.#include <stdlib.h> main() { int *p; fun(&p); … } int fun(int**p) {*p=(int*)malloc(2); }
D.#include <stdlib.h> main() { int *p; fun(p); … } int fun(int *p) {p=(int*)malloc(sizeof(int));}
B.q->next=s;s->next=p;
C.p->next=s->next;s->next=p;
D.s->next=p->next;p->next=-s;
更多 “【原创作品】跨函数使用内存的问题试题【资料下载】” 相关考题
- 填空题根据《保障农民工工资支付条例》,用人单位实行农民工劳动用工()管理,与招用的农民工书面约定或者通过依法制定的规章制度规定工资支付标准、支付时间、支付方式等内容。
- 异位妊娠的诊断要点不包括()A、有停经史B、高热C、阴道出血D、腹痛E、尿妊娠试验阳性
- 眼球的光学系统的主要成分为()、()、()、玻璃体。
- 眼遗传学
- 护理程序是护士在工作中运用的一种解决问题的方法,其特点不包括()。A、以系统理论为指导B、护士有决策的权利C、护理工作是按计划进行的D、是一个需要不断反馈的过程E、按病人的生理需要来安排计划
- 因过度悲哀引起的失眠、血压升高,属于影响健康因素中的()A、生物因素B、心理因素C、物理因素D、社会因素
- 拔伸法的作用是使关节得到()A、屈伸,展收,滑利B、整复,伸展,松解C、屈伸,整复,松解D、旋转,伸展,松解
- 茧唇好发于:()A、上唇B、下唇C、口角D、上唇红缘部E、下唇红缘部
- 人类基本需要层次理论对护理实践的意义包括()A、帮助护士发现护理问题B、使护士更好地理解病人的言行C、有利于护士预测病人潜在的护理问题D、有助于护士确定护理计划的优先顺序E、可依据需要层次识别护理问题的轻、重、缓、急
- 视网膜电图中b波下降,a波正常,常见的眼病是()A、视网膜脱离B、脉络膜炎C、视网膜脉络膜炎D、一泛视网膜光凝后E、视网膜静脉阻塞
- 2020年全国II卷文综高考真题-
- 2020届北京各区高三一模语文试题分类汇编(文学文本阅读)教师版-
- 2020学年高三上学期语文(新高考)九月月考检测卷含答案_
- 2020安徽省安庆市学年高一语文上学期期中试题(含答案)_
- 精编国家开放大学电大专科《人体解剖学与组织胚胎学》2021期末试题及答案(试卷号:2115)_
- 精编国家开放大学电大专科《农村经济与管理》填空名词解释题题库及答案(试卷号:2113)(1)_
- 精编国家开放大学电大专科《人体解剖学与组织胚胎学》2026期末试题及答案(试卷号:2115)_
- 精编国家开放大学电大专科《农科基础化学》形考任务3试题及答案_
- 精编国家开放大学电大专科《人体解剖学与组织胚胎学》单项选择题题库及答案(试卷号:2115)_
- 精编国家开放大学电大专科《企业金融行为》2023期末试题及答案(试卷号:2046)_