数据结构考研复试题(数据结构考研复试题及答案)
链表反转
此题属于中低难度的题,思路并不复杂,单其中有很多易错点,比如空指针判断、指针丢失等;
思路:设置三个指针pre、cur、next,初始时刻pre = null,cur = head;
开始处理,首先执行next = cur.next,防止后面cur.next修改之后指针丢失;
环形链表检测并返回入环点
这个题目技巧性很强,一般不太容易想到;大体思路如下:
首先设置快慢指针,每一次移动,快指针移动两步(尤其需要注意第二步判断空指针),慢指针移动移步;然后判断两个指针是否指向同一位置。
如果最终快指针遇见null,则无环;如果快慢指针指向了同一位置,则有环;
如果有环的化,两指针相遇时,快指针移动到head位置,并且变为慢指针(每次移动一步);然后两个指针再次开始移动,直到再次相遇即为入环点。(证明略)
链表归并排序
二路归并排序:假设两个有序数组,设置两个指针,指向0位置,将指向比较小元素的指针对应的元素存入数组,并移动指针;直到两个指针移动完毕;
归并排序思路:归并排序是建立在二路归并排序基础之上,将数组逐渐分解,直到仅有一个元素,然后进行二路归并排序。(先分后合的思想)
伪代码如下:
public int[] merge(int[] nums,int start, int end){
if(start == end){
return new int[]{nums[start]};
}
int mid = (start + end) / 2;
int[] s1 = merge(nums, start,mid);
int[] s2 = merge(nums,mid + 1, end);
return binMerge(s1,s2);
}
链表归并排序比数组归并排序难度有所增加,但思路是一致的,仍然是逐步分解,直到只有一个结点,然后再合并。
主要区别在于中点的选取,关于中点选取,这里也有现成的思路,通过快慢指针,当快指针走到终点时,慢指针即为中点。
具体实现如下:
连载系列:
免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
-
剑桥申请 研究生?牛津剑桥研究生
一、怎么考剑桥大学1.充分准备:剑桥大学的录取标准非常严格,因此考生需要充分准备,以确保自己能够达到剑桥大学的要求。2.参加考试:考生需要参加剑桥大学的入学考试,包括UCAS申请,剑桥大学的入学考试,[详细] -
华盛顿大学西雅图 研究生(西华盛顿大学)
一、华盛顿大学西雅图分校研究生录取GPA是多少,我想申请统计专业,或者靠近经济专业的专业,GPA要求是1、TOEFL网考至少92分;IELTS总分至少7分;MLT至少90分;PTE至少65分。2、正规[详细] -
化学研究生全国排名?西南科技大学研究生院
一、化学工程与工艺考研学校排名化学工程与工艺考研学校新排名:清华大学;二、化学专业研究生大学排名化学研究生院校专业排名:1中国科学院大学,2清华大学,3北京大学,4浙江大学,5南开大学,6复旦大学,7[详细] -
旧金山大学研究生,旧金山大学分析学硕士
一、旧金山大学有几个校区旧金山大学(SanFranciscoUniversity)是一所位于美国加利福尼亚州旧金山市的私立大学,该校只有一个校区,位于市内的LoneMountain区,占地面积55英亩[详细] -
健康服务与管理研究生?健康管理大专出来有用吗
一、健康信息与社会服务硕士就业前景1、就业前景很好。我国健康管理行业发展异常迅猛,目前国内已有超过3000家专业的健康管理公司,其中有数家已经获得数千万美元巨额投资。2、健康管理作为一种最具活力的健康[详细]