首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下技术说明和C语言函数,将C程序段中(1)-(5)空缺处的语句填写完整。 [说明] 函数DelA - InsB ( LinkedList La, LinkedList Lb, int key 1,int key 2,int len)的功能
阅读以下技术说明和C语言函数,将C程序段中(1)-(5)空缺处的语句填写完整。 [说明] 函数DelA - InsB ( LinkedList La, LinkedList Lb, int key 1,int key 2,int len)的功能
admin
2009-02-15
54
问题
阅读以下技术说明和C语言函数,将C程序段中(1)-(5)空缺处的语句填写完整。
[说明]
函数DelA - InsB ( LinkedList La, LinkedList Lb, int key 1,int key 2,int len)的功能是,将线性表A中关键码为key 1的节点开始的len个节点,按原顺序移至线性表B中关键码为key 2的节点之前。若移动成功,则返回0;否则返回-1。
线性表的存储结构为带头节点的单链表,La为表A的头指针,Lb为表B的头指针。单链表节点的类型定义如下。
typedef struct node{
int key;
struct node*next;
} *LinkedList;
[C程序]
int DelA_InsB (LinkedLiSt La, LinkedList Lb, int key1,int key2,int len
{ LinkedList p, q, S, prep, pres;
int k;
if (!La ->next || !Lb ->next || len<=0)
return-l;
p = La->next;
prep = La;
while (p && p->key != key1){ /* 查找表A中键值为key1的节点 */
prep = p;
p = p->next;
}
if (!p)
return -1; /* 表A中不存在键值为key1的节点 */
q = p;
k = 1;
while (q &&(1)){ /* 在表A中找出待删除的len个节点 */
(2);
k++;
}
if (!q)
return -1; /* 表A中不存在要被删除的len个节点 */
S = Lb ->next;
(3);
while (s && s->key != key2){ /* 查找表B中键值为key2的节点 */
pres = s;
s = e->next;
}
if (!s)
return -1; /* 表B中不存在键值为key2的节点 */
(4) q->next; /* 将表A中的len个节点删除 */
q->next=(5)
pres->next = p; /* 将len个节点移至表B */
return 0;
}
选项
答案
这是一道要求读者在单链表上实现元素的群插入、群删除操作的程序设计题。本题的解答思路如下。 本程序是在链表插入和删除单个节点的基础上进行扩展的,一次性插入多个节点和删除多个节点。元素的群插入或群删除操作是在只删除一个元素的基础上,通过增加一个寻找指定大小和指定数量节点的过程来实现的。其原理和插入、删除一个节点的运算是一致的。首先在链表A中查找键值为key1的节点。在程序中使用了如下的第1个while循环语句。 while (p && p->key !=key1){ /* 查找表A中键值为key1的节点 */ prep = p; p = p ->next; } 若找到键值为key1的节点(即查找成功),则用指针p指示(即p指向该节点),指针prep指向p的直接前驱。然后观察在p的后面是否有len个节点。在程序中使用了如下的第2个while循环。 q = p;k = 1; while (q && (1) ) { /* 在表A中找出待删除的len个节点 */ (2) ; k++;} 第2个while循环是为了找到以键值为key1的节点开始的len个节点。若查找成功,指针吁将指向len个节点中的最后一个节点。程序先将q指向p,变量k是用来计算节点个数的计数器。而该循环的结束条件有两个。第1个是p的后面没有len个节点。此时q为空,所以(2)空缺处所填写的语句是“q=q->next”或“q=(*q).next”,使q的指针往后移动。第2个是p的后面有len个节点。此时k=len,所以(1) 空缺处所填写的语句是“k<len”。如果p的后面有len个节点,则q指向第len个节点,如图3-22所示。图 3-22中的虚线表示省略了中间若干个节点。 [*] 图3-22 链表示意图1 同理,在链表B中查找键值为key2的节点,使用了如下的第3个while循环语句。 S = Lb->next; (3) ; while (s && s->key !=key2) { /* 查找表B中键值为key2的节点 */ pres.=s;s=s->next; } 以上的程序中,s指向第1个节点,然后进行循环。循环的结束条件有2个:第1个是s为空,即说明从头到尾都没有找到键值为key2的节点;第2个是指针s指向该节点,指针pres指向;的直接前驱,即表示查找成功。但是,当第1个节点的键值就是key2时,根据循环条件,循环中的语句不执行,则pres没有值。所以(3)空缺处所填写的内容是“pres=Lb”,使指针pres始终指向s的前驱,如图3-23所示 (图中的虚线表示省略了中间若干个节点)。 [*] 图3-23 链表示意图2 最后将指针p到q的连续len个节点从链表A中删除,在链表B中插入,如图3-24所示。 [*] 图3-24 链表示意图3 程序中使用的语句如下。 (4) q->next; /* 将表A中的len个节点删除 */ q->next= (5) pres->next=p; /* 将len个节点移至表B */ 如果要把指针p到q的连续len个节点从链表A中删除,就要把指针p的前驱(prep)的next指向指针q的next,因此(4)空缺处所填写的内容是“prep->next”或“(*prep).next”, 接下来将指针q的next指向线性表B中s,把指针s的前驱(pres)的next指向p,即(5)空缺处所填写的内容是“s”(或“pres->next”,或“(*pres).next”。
解析
转载请注明原文地址:https://www.kaotiyun.com/show/gEjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
撰写数据分析报告时,如何用图正确地展现数据,需要考虑的问题中,不包括______。
文件外壳型病毒(21)。
某商场的部门和商品两个实体之间的关系如下图所示。假设每个部门负责销售若干种商品,每种商品只能由一个部门负责销售,那么部门和商品之间存在着(14)的联系。
四个铜厂前年的产值、去年的产值如下表:根据上表,在这几个厂中,(29)发展最快。
在Excel2007中,设单元格A1中的值为-1,B1中的值为1,A2中的值为0,B2中的值为1,若在C1单元格中输入函数“=IF(AND(A1>0,B1>0),A2,B2)”,按回车键后,C1单元格中的值为______。
(31)________________接受每个用户的命令,采用时间片轮转方式处理服务请求,并通过交互方式在终端上向用户显示结果。
以下关于windows7文件名的叙述中,(20)________________是正确的。
鼠标指针的形状取决于它所在的位置以及与其他屏幕元素的相互关系。在文字处理的文本区域,指针就像(),指向当前待插入字符的位置。
经过反复修改的文档已经定稿,需要送到其他电脑上打印。为防止不同电脑不同软件版本或他人误操作导致文档发生变化,最好将该文档以()格式保存并传送。
随机试题
Eversincehumanslivedontheearth,theyhavemadeuseof【C1】______formsofcommunication.Generallythis【C2】______ofthoughts
王某冒充公安局刑警队长,以检查为由将某洗头房老板赵女哄到外面骗奸。后赵女与其丈夫说起王某的体貌特征,发现上当受骗,遂报警。王某承认自己冒充警察与赵女发生性关系,但说赵女是自愿的,不是强奸。下列说法哪个是正确的?
现代会计信息系统中,计算机自动处理会计数据,会计基础工作规范化也不需要了。()
2010年5月7日,甲公司与丁公司订立合同,从丁公司处租赁机床一台。2011年3月9日,人民法院受理了甲公司的破产案件,管理人接管财产后误将机床作为债务人财产,并与戊公司签订合同以20万元的市场价格转让机床,合同订立当日,双方钱货两清。2011年4月15日
唯物史观和唯心史观在谁是历史创造者的问题上的根本对立,在于
已知R3的两个基分别为求由基α1,α2,α3到基β1,β2,β3的过渡矩阵P.
沟通模型的四个部分是()。
某高校为了使学生更好地进行职场定位和职业准备,提高就业能力,该校学工处将于2013年4月29日(星期五)19:30-21:30,在校国际会议中心举办题为“领慧讲堂一一大学生人生规划”就业讲座,特别邀请资深媒体人、著名艺术评论家赵蕈先生担任演讲嘉宾。请根据上
TheNeedtoRememberSomepeoplesaytheyhavenomemoryatall:"Ijustcan’trememberathing!"Butofcourseweallhave
Itisnotlongsinceconditionsinthemineswereworsethantheyarenow.Therearestill【C1】______afewveryoldwomenwhoin
最新回复
(
0
)