计算机数据结构考研试题答案
哈尔滨工业大学计算机学院2000年研究生入学试题数据结构答案
一、名词解释:
1.抽象数据型:一个数学模型和在该模型上定义的操作集合的总称。
2.算法的时间复杂性:算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法
的时间量度记做T(n)=O(f(n))。它表示随问题规模n的增大,算法执行的时间的增长率相同
,称作算法的渐进时间复杂度,简称时间复杂度。
3.散列法:也称杂凑法,它通过对记录的关键字进行某种运算,直接求出记录文件的地址,是关键字到地址的直接转换方法。
4.索引文件:索引文件是在主文件之外再建立一个指示关键字与其物理记录之间的对应关
系的表,这种表称为索引表。索引表与主文件共同构成索引文件。
二、填空:
1.为了处理空表的时候方便
2.n-1
3.某种遍历顺序的直接前导节点 某种遍历顺序的后继前导节点
4.左右链 父链 邻接表
5.插入 交换 选择 归并基数
三、判断
1.正确 2.错误 3.正确 4.错误 5.正确
四、区别:
堆与二元查找树均满足任一节点的元素值小于其左右儿子的值,但是若按中根顺序遍历一
颗二元查找树,将得到最终结果既递增顺序,而堆无此性质,需经过整理才得到最终结果。
五、
快速排列是由起泡排列改进而得的,它的基本思想是:在待排序的n个记录中任取一个记
录(通常取第一个记录),把该记录放入最终位置后,数据序列被此记录分割成两部分。
所有关键字比该记录关键字小的放置在前一部分,所有比它大的放置在后一部分,并把该
记录排在这两部分的中间,这个过程称作一次快速排序。之后对所有的两部分分别重复上
述过程,直至每一部分内只有一个记录为止。简而言之,每趟使表的第一个元素入终位,
将表一分为二,对子表按递归方式继续这种划分,直至划分的子表长为1。
六、
七、
第一、四个正确
八、
若已知先根和后根的遍历结果,不能构造出这颗树。因为叶子无兄弟的时候,有二义性,
因此知道先根和中根遍历或者知道后跟和中根遍历的结果才能构造出这颗二元树。
九、
Prim:
(1) (2) (3) (4) (5) (6)
Kruskal
(1) (2) (3) (4) (5)
十、
设计思想:1.中根遍历 2.利用栈倒序排列输出
void SEARCH(BTREE BT)
{ stack S,R; BTREE T;
elementtype p;
MAKENULL(S);
MAKENULL(R);
while(!ISEMPTY(T)||EMPTY(S))
{ if (!ISEMPTY(T))
{ push(T,S);
T=LCHILD(T);
}
else
{ T=TOP(s);
POP(s);
push(DATA(T),R);
T=RCHILD(T);
}
}
while (!EMPTY(R))
{ p=TOP(R);
POP(R);
printf(R)
}
}
十一、
struct node {
datatype data;
node *lchild;
node *rchild;
}typedef node *BTREE; //二元树结点的结构
int cbt(BTREE t)
{ MAKENULL( QUEUE Q);
bj=1; cm=1; //一个判断是否为空
if(t!=NULL)
{ ENQUEUE(t,Q);
while(!empty(Q)&&cm)
{ p=DEQUEUE(Q);
if (p->lchild==NULL)
{ bj=0;
if (p->rchild==NULL) cm=0;
}
else
{ cm=bj;
ENQUEUE(p->lchild,Q);
if (p->rchild==NULL) bj=0;
else ENQUEUE(p->rchild,Q);
}
}
}
return cm;
}
哈尔滨工业大学计算机学院2001年研究生入学试题数据结构答案
一、填空:
1.O(1) O(n)
2.5 3
3. 完全 退化的单链树
4.i-1
5.O(n2)
二、选择填空: