欢迎来到天天文库
浏览记录
ID:42908842
大小:33.50 KB
页数:3页
时间:2019-09-23
《程序员考试填空解题方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
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):其中有一个
此文档下载收益归作者所有