东南大学1994年数据结构专业课考研真题试卷(回忆版)
日期:2014-07-01 10:55

(单词翻译:单击)

一、回答下列问题(共32分)

1.最近最少使用(Least-Recently-Used)页替换是虚拟存储系统中常用的策略,试说明如何利用一页链接表时刻跟踪最近最少使用页?(8分)

2.已知无向图G,V(G)={1,2,3,4},E(G)={(1,2),(1,3),(2,3),(2,4),(3,4)},试画出G的邻接多表(Adjacency Multilists),并说明,若已知点i,如何根据邻接多表找到与i相邻的点j?(8分)

3.欲求前k个最大元素,用什么分类(sorting)方法好?为什么?什么是稳定分类?分别指出下列算法是否稳定分类算法,或易于改成稳定分类算法?

(a)插入分类(b)快速分类(c)合并分类(d)堆(heap)分类(e)基数分类

(radix sort) (8分)4.构造最佳二叉检索树的前提条件是什么?在动态情况下,一般AVL树的查询性能不如完全二叉检索树的,为什么人们却采用AVL树呢?(8分)

二、下列算法对一n位二进制数加1,假设无溢出,该算法的最坏时间复杂度是什么?并分析它的平均时间复杂性.(15分)

type Num=array[1..n] of [0..1];

procedure Inc(var A:Num);

var j: integer;

begin i:=n;

while A[i]=1 do

A[i]:=0;i:=i-1;

end;

A[i]:=1;

end Inc;

三、给定n*m矩阵A[a..b,c..d],并设A[i,j]<=a[i,j+1](a<=i<=b,c<=j<=d-1)<>和a[i,j]<=a[i+1,j](a<=i<=b-1,c<=j<=d),<>设计一算法以比o(n*m)小的时间复杂度判定值x是否在A中.(17分)<=a[i+1,j](a<=i<=b-1,c<=j<=d),<><=a[i,j+1](a<=i<=b,c<=j<=d-1)<>

四、设图G有n个点,利用从某个源点到其余各点最短路径算法思想,设计一产生G的最小生成树的算法.(18分)

五、字符序列的子序列由删除该序列任意位置的任意个元素而得.序列x和y的最长公共子序列记为Lcs(x,y),是x和y的公共子序列,且长度最大.例如,adcbcb是x=abdcbcbb和y=adacbcb的最长公共子序列.设x长度为n,y长度为m,设计一算法计算x和y的最长公共子序列的长度,尽可能改进你的算法,使它的时间复杂性为O(n*m).(18分)

分享到
重点单词
  • arrayn. 数组,(陈)排列,大批,一系列 vt. 排列,布署
  • proceduren. 程序,手续,步骤; 常规的做法