电话:0731-83595998
导航

【软考】程序员考试下午试题程序填空解题方法

来源: 2017-08-31 16:03

一、步骤理解题意:
2、确定算法:
   在描述中同时要理解算法过程。在分析算法时,可以以某个具体实例来试验。
   分析程序结构,如果有很多子函数,首先弄清楚各函数之间的关系和各函数的作用;如果程序较长,则应该根据算法过程,把每个程序段与算法的每个过程对应起来,确定相应的程序段功能。
4、根据C语言的语法填空。
【示例】2004年上半年程序员下午试题试题六
   函数DelAInsB(LinkedList La,LinkedList lb,int key1,int key2,int len)的功能是,将线性表A中关键码为keyl的结点开始的len个结点,按原顺序移至线性表B中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1。线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针。单链表结点的类型定义为:
    int key;
   }*Linkedhist;

[函数]
(2) { LinkedList ?p,q,s,prep,pres;
(4)  if (!La->next || !Lb->next || lennext; prep = La;
key != keyl) { /* 查找表A中键值为key1的结点 */(7)   prep = p;p = p->next;
(9)  if (!p) return -1; /* 表A中不存在键值为key1的结点 */
(11)  while (q && __(1)__) { /* 在表A中找出待删除的len个结点 */
(13)  }
(15)  s = Lb->next; __(3)__;
key != key2) { /* 查找表B中键值为key2的结点 */(17)   pres = s; s = s->next;
(19)  if (!s) return -1; /* 表B中不存在键值为key2的结点 */
next; /* 将表A中的len个结点删除 */
next= ??(5) ;
next = p; /* 将len个结点移至表B */
(24)  }理解题目:
2、算法:
实例

 

  如图所示,如果我们找到实线的指针,它们分别指向La中的Key1结点(p指针)、Key1的前一个结点(q指针)、Aj(从Key1结点开始的第 len个结点,r指针)和Lb中的Key2的前一个结点(s指针),则根据链表操作,用图中的虚线指针连接,我们就可以把La中从Key1结点开始的共 len个结点全部移动到Lb链表中。因此算法大致如下:
   (2)找到r指针;
   (4)r->next=s->next(即把Aj结点连接到K2结点之前);
next=q(即把K1结点连接到原来Lb中K2结点的前一个结点的后面);
   (6)要注意的是现在La链表已经断开,也必须重新连接上,故要:
   (1)La或Lb是空链表;
   (3)La中不存在Key1的结点;
   (4)Lb中不存在Key2的结点;
   程序段(5)~(8):其中有p指针在向后移动,一直到Key1为止,因此,它们的功能就是找到指向Key1结点的指针;另有一个指针prep一直在p的后面,因此它就是指向Key1的前一个结点的指针。
   程序段(15)~(18):其中有s指针在向后移动,一直到Key2为止,因此,它们的功能就是找到指向Key2的前一个结点的指针。
4、考虑细节,并填空。

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端