当前位置:问答库>考研试题

2018年北京大学地球与空间科学学院907计算机学科专业基础综合之数据结构考研核心题库

  摘要

一、算法设计题

1. 已知两个链表A 和B 分别表示两个集合,其元素递增排列。编一函数,求A 与B 的交集,并存放于A 链表中。

【答案】算法如下:

//设工作指针pa 和pb ;

//结果表中当前合并结点的前驱的指针

//交集并入结果表中

//释放结点空

//释放结点空间

//释放结点空间

//置链表尾标记

//注:本算法中也可对B 表不作释放空间的处理

2. 以三元组表存储的稀疏矩阵A ,B 非零元个数分别为m 和n 。试用类PASCAL 语言编写时间复杂度为0(m+n) 的算法将矩阵B 加到矩阵A 上去。A 的空间足够大,不另加辅助空间。要求描述所用结构。

【答案】算法如下:

=大于非零元素个数的某个常量

//本算法实现以三元组表存储的各有m 和n 个非零元素两个稀疏矩阵相加,结果放到A 中

//L,p 为A ,B 三元组表指针,k 为结果三元组表榫针(下标

)

//行号不等时,行号大者的三元组为结果三元组表中一项

//A中当前项为结

果项

//B中当前项为结果

当前项

//行号相等时,比较列号

//结束行号相等时的处理

//结束行号比较处理

//结果三元组表的指针前移(减

1)

//结束WHILE 循环。

//处理B 的剩余部

//处理A 的剩余部

//稀疏矩阵相应元素相加时,有和为零的元素,因而元素总数<m +

n

//三元组前移,使第一个三元组的下标

1

//修改结果三元组表中非零元素个数

//结束addmatrix

3. 设在4地(A, B , C , D) 之间架设有6座桥,如图所示。

要求从某一地出发,经过每座桥恰巧一次,最后仍回到原地。 (1)试就以上图形说明:此问题有解的条件是什么?

(2)设图中的顶点数为n ,试用C 或PASCAL 语言描述与求解此问题有关的数据结构并编写一个算法,找出满足要求的一条回路。

【答案】(1)只有所有的顶点的度都是偶数,才能有解。 (2)算法如下:

图中顶点的最大个数

弧(边) 结点

是邻接点在顶点向量中的下标,num 是边的编号

指向下一邻接点的指针

与弧(或边) 相关的信息指针

顶点结点

顶点信息及指向第一邻接点

的指针

邻接表

修改常规访问标志数组visited 的含义:当元素值为1时表示该边已访问;当元素值为0时表示该边尚未访问。

用邻接表作为存储结构的深度优先遍历算法

第一邻接点

结束dfs ( )

求顶点的度

若顶点度为0, 或顶点的度不是偶

数,无解

无解