程序员考试填空解题方法

程序员考试填空解题方法

ID:42908842

大小:33.50 KB

页数:3页

时间:2019-09-23

程序员考试填空解题方法_第1页
程序员考试填空解题方法_第2页
程序员考试填空解题方法_第3页
资源描述:

《程序员考试填空解题方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、程序员考试填空解题方法一、步骤1、理解题意:主要是根据问题的描述,确定问题的己知条件,并了解算法(程序)要达到的目的。通俗讲,就是要知道问题的输入和输出。2、确定算法:每个题冃在前面都有描述,通过对描述的分析,要确定题冃应该属于哪一类数据结构以及相应的算法。有些题冃可能不属于任何数据结构,则它可能与某类算法(8类)有关;但也有一些算法纯粹是数学方法。在描述屮同时要理解算法过程。在分析算法时,可以以某个具体实例來试验。3、理解程序:分析程序结构,如果有很多子函数,首先弄清楚各函数Z间的关系和各函数的作用;如果程序较长,则应该根据算法过程,把每个程序段与算法的每个过程对应起來,确定相应的程序

2、段功能。在程序中,已经定义了某些变量,则在理解程序时,首先必须理解这些变量的含义。4、根据C语言的语法填空。二、示例【示例】2004年上半年程序员下午试题试题六[函数说明]函数DelAInsB(LinkedListLa,LinkedListlb,intkey1,intkey2,intlen)的功能是,将线性表A中关键码为keyl的结点开始的len个结点,按原顺序移至线性表B中关键码为kcy2的结点之前,若移动成功,则返回0;否则返回线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针。单链表结点的类型定义为:typedefstructnode{intkey;stru

3、ctnode*next;}*Linkedhist;[函数](1)intDelllnsB(LinkedLiStLa,LinkedListLb,intkeyl,intkey2,intlen)(2){LinkedList?p,q,s,prep,pres;(3)intk;(4)if(!La・>next11!Lb・>next

4、

5、lennext;prep=La;(6)while(pp->key!=keyl){/*查找表A中键值为keyl的结点*/(7)prep=p;p=p->next;(8)}(9)if(!p)return・1;/*表A中不存在键值为keyl的结点*/(10)q=p;k=1;(1l)

6、while(q―(1)―){/*在表A中找出待删除的len个结点*/(12)__(2)__;k++;(13)}(14)if(!q)return-1;/*表A中不存在要被删除的lcn个结点*/(15)s=Lb->ncxt;―(3)__;(16)while(ss->key!=key2){/*查找表B中键值为key2的结点*/(17)pres=s;s=s->next;(18)}(19)if(!s)return・1;/*表B中不存在键值为key2的结点*/(20)__(4)__=q->next;/*将表A中的len个结点删除*/(21)q->next=??(5);(22)pres->next=p

7、;/*将len个结点移至表B*/(23)return0;(24)}1、理解题目:已知条件为两个链表La和Lb,最后得到的结果也是两个链表,只不过是La中的部分结点移动到Lb中,因此,本问题主要是解决是怎么移动的。2、算法:在题目中没有给出结点移动的算法,我们先可以结合实例自己设计一个算法,然后看是不是与程序中的算法一致。如果不是,则再找算法。实例:如图所示,如果我们找到实线的指针,它们分别指向La中的Keyl结点(p指针)、Key1的前一个结点(q指针)、Aj(从Key1结点开始的第len个结点,r指针)和Lb中的Key2的前一个结点(s指针),则根据链表操作,用图中的虚线指针连接,我们

8、就可以把La中从Keyl结点开始的共len个结点全部移动到Lb链表中。因此算法大致如下:(1)找到p和q指针;(2)找到r指针;(3)找到s指针;(4)r・>next=s・>next(即把Aj结点连接到K2结点之前);(5)s->ncxt=q(即把K1结点连接到原来Lb中K2结点的前一个结点的后而);注意:经过(4)、(5)两步操作,即实现了移动操作。(6)要注意的是现在La链表已经断开,也必须垂新连接上,故要:但是注意一下程序,就会发现里面有很多判断,主要是看判断是否可以移动。我们考虑后(也可以看程序)发现,在以下儿种情况下,操作不能进行:(l)La或Lb是空链表;(2)lcn表示个数

9、的值,因此不能不大于0;(3)La中不存在Keyl的结点;(4)La中从Key1结点开始的结点个数小于len个;(4)Lb屮不存在Key2的结点;3、现在主要是看程序结构是不是和我们白己考虑的算法符合。程序段(5)〜(8):其中有p指针在向后移动,一直到Keyl为止,因此,它们的功能就是找到指向Keyl结点的指针;同吋,另有一个指针prep—直在p的后而,因此它就是指向Keyl的前一个结点的指针。程序段(10)〜(13):其中有一个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。