东南大学1998年数据结构专业课考研真题试卷(回忆版)
日期:2014-06-29 11:00

(单词翻译:单击)

一:简要回答下列问题(共40分)

1.设胜者树(selection tree)由k个记录缓冲区和k-1个非叶结点构成.概念上非叶结点表示其两个子女中关键字较小者,而实际上非叶结点存放的是什么?(5分)

2.索引顺序存取方法(ISAM)中,主文件已按主关键字(primary key)排序,为什么还需要主关键字索引?(6分)

3.一棵前序序列为1,2,3,4的二叉树,其中序序列可能是4,1,2,3吗?设一棵二叉树的前序序列为1,2,3,4,5,6,7,8,9,其中序序列为2,3,1,5,4,7,8,6,9,试画出该二叉树.(7分)

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

5.将两个栈存入数组V[1..m]中应如何安排最好?这时栈空栈满的条件是什么?(6分)

6.已知无向图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分)

二:写出用堆排序(heap sort)算法对文件F=(12,3,15,30,9,28)进行排序时,初始堆及以后每挑好一个元素重新调整后堆的状态,并指出这里的堆和败者树(tree ofloser)的一个主要区别.(8分)

三:设数组A存放一n位二进制数,试说明下列算法X的功能.假设无溢出,算法X的最坏时间复杂度是什么?分析它的平均时间复杂性.(8分)

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

procedure X(var A:Num);

var j: integer;

begin i:=n;

while A[i]=1 do

begin

A[i]:=0;

i:=i-1;

end;

A[i]:=1;

end;

四:下面是一改进了的快速分类算法:

1、procedure qsort1(var list:afile;m,n:integer);

2、(设list[m].key3 var i,j,k:integer;

4、begin

5、while m6 begin

7、i:=m;j:=n+1;k:=list[m].key;

8、repeat

9、repeat i:=i+1 until list[i].key>=k;

10、repeat j:=j-1 until list[j].key<=k;<><=k;<>

11、if i12 until i>=j;

13、interchange(list[m],list[j]);

14、if n-j>=j-m

15、then begin qsort1(list,m,j-1);m:=j+1;end

16、else begin qsort1(list,j+1,n);n:=j-1;end

17、end;(of while)

18、end;

问: (共20分)

1.将第9,10行中的>=,<=分别改成>,<行吗?为什么?(5分)

2.该排序算法稳定否,举例说明.(5分)

3.对输入文件(22,3,30,4,60,11,58,18,40,16),列表表示该文件在每次调用qsort1时的状态及相应m,n的值.(5分)

4.若输入文件有n个记录,简要说明支持qsort1递归所需最大栈空间用量(设一层递归用一个单位栈空间).(5分)

五:给定AOE网络各事件(标号1..n)的ee,le值和邻接表,写一算法求该AOE的所有活动(用相应边的两端点表示)的关键度(criticality).(10分)

六:给出中序线索树的结点结构,并画出一个具有头结点和六个树结点的中序线索树,试写一算法在不使用栈和递归的情况下前序遍历一中序线索树,并分析它的时间复杂性.(18分)

分享到
重点单词
  • primaryadj. 主要的,初期的,根本的,初等教育的 n. 最主
  • arrayn. 数组,(陈)排列,大批,一系列 vt. 排列,布署
  • proceduren. 程序,手续,步骤; 常规的做法
  • interchangen. 交换,立体交叉道 v. 交换