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

2018年河北大学计算机科学与技术学院853计算机网络(计)之数据结构考研核心题库

  摘要

一、算法设计题

1. 给出以十字链表作存储结构,建立图的算法,输入(i, j , V) , 其中i , j 为顶点号,v 为权值。

【答案】算法如下:

建立有向图的十字链表存储结构

假定权值为整型

建立顶点向量

当输入i 、j 、v 之一为0时,结

束算法运行

申请结点

弧结点中权值域

算法结束

2. 设要求按

是一个记录构成的数组,

是一个整数数组,其值介于1〜100之间,现

的内容调整A 中记录的次序,比如当B[l]=ll 时,则要求将A[l]的内容调整到A[ll]

中去。规定可使用的附加空间为O(1)。

【答案】算法如下:

//A是100个记录的数组,B 是整型数组,本算法利用数组B 对A 进行计数排序

//若B[i]=i 则A[i]正好在自己的位置上,则不需要调整

//B[j]和B[k]交换

//r0是数组A 的元素类型,A[j]和A[k]

交换

//完成了一个小循环,第i 个已经安排好

//算法结束

3. 设单链表的表头指针为h ,结点结构由data 和next 两个域构成,其中data 域为字符型。写出算法dc(h,n) ,判断该链表的前n 个字符是否中心对称。例如xyx ,xyyx 都是中心对称。

【答案】算法如下:

//h是带头结点的n 个字符元素的单链表,本算法判断链表是否中心对称

//i记下结点个数,s 是字符栈

//P是链表的工作指针,指向待处理的当前元素

//链表前一半元素入栈

//恢复最后的i 值

//若n 是奇数,后移过中心结点

//测试

是否中心对称

//链表中心对称

//链表不中心对称

//算法结束

4. 若x 和y 是两个采用顺序结构存储的串,编写一个比较两个串是否相等的函数。

【答案】算法如下:

//本算法判断两个顺序存储的串x 和y 是否相等,相等返回1,否则返回

//对应字符相等,指针后移

5. 假设串的存储结构如下所示,编写算法实现串的置换操作。

【答案】算法如下:

//s和t 是用一维数组存储的串,本算法将s 串第i 个字符开始连续j 个字符用t 串置换,操作成功返回1,否则返回0表示失败

//检査参数及置换后的长度的合法性

//若S 串被替换的子串长度小于t 串长度,则S 串部分右移

//S串中被替换子串的长度小于t 串的长度

//将t 串复制到S 串的适当位置

//算法结束

//本算法是串的置换操作,将串S 中所有非空串t 相等且不重叠的子串用V 代替

//判断S 是否有和t 相等的子串

//串S 中包含和t 相等的子串

//creat操作是将串常量(此处为空串) 赋值给

temp

//求串t 和s 的长度

//用串v 替换t 形成部

分结果

//将串s 中串后的部分形成新的s 串

//求串s 的长度

//在新s 串中再找串t 的位置

//将串temp 和剩余的串s 连接后再赋值给s

}//if结束

//算法结束

二、应用题

6. 以归并算法为例,比较内部排序和外部排序的不同,说明外部排序如何提高操作效率。

【答案】(1)内部排序中的归并排序是在内存中进行的归并排序,辅助空间为O(n)。外部归并排序是将外存中的多个有序子文件合并成一个有序子文件,将每个子文件中记录读入内存后的排序方法可采用多种内排序方法。外部排序的效率主要取决于读写外存的次数,即归并的趟数。

(2)因为归并的趟数排序的效率。

,其中,m 是归并段个数,k 是归并路数。增大k 和减少m 都

可减少归并趟数。应用中通过败者树进行多(k)路平衡归并和置换一选择排序减少m ,来提高外部