数据结构 暨南大学 期末试卷 试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。



一、判断题(共10分)
1. 当静态链表采用数组实现时,插入与删除操作仍需移动元素。
2. 栈也是一种线性表,也同样有顺序存储结构和链式存储结构。
3. 二叉树的三种遍历算法区别仅在于对树根、左右子树访问先后顺序的不同。
4. 邻接表是图的一种顺序存储结构。
5. 二叉树就是度数为2的树。
6. 在哈希表中勿需比较就可找到记录在表中的位置。
7. 线性表的链式存储结构既方便其存取操作,也方便其插入与删除操作。
8. 顺序存储结构既适合于完全二叉树,也同样适合于一般的二叉树。
9.一个算法是正确的、高效率的,还不能说它就是一个“好”的算法。
10. 快速排序与堆排序的平均时间复杂度相同。
二、概念填空(共20分,每题2分)
1.对顺序存储结构的线性表,设表长为La;在各元素插入为等概率条件下,插入一个数据元素需平均移动表中元素_______ 个;在最坏情况下需移动表中元素_______ 个。
2.从逻辑角度看,四种基本的数据结构可分为__________、___________、____________和____________;两种存储结构为_____________和_________________。
3.一个深度为H的满k(k>2)叉树,其第i层(若存在)有________个结点;编号为p(p>1)的结点其父结点(父结点为非根结点)编号是___________________。
4.具有n个结点的完全二叉树的深度为____________;编号为p(5.堆栈被称为一个_____________的线性表;队列被称为一个_____________的线性表。
6.静态查找表的查找方法主要有:有序表查找及________________________;在n个记录中进行折半查找,当查找不成功时,与关键字比较次数最多为_____________________。
7.一颗9阶的B_ 树,其每个结点(除根外)的子树数目为________________,关健字数目为________________。
8.内部排序方法大致可分为__________、___________、____________、__________和_________等五类;简单排序方法的时间复杂度为_________。
9.外部排序分为两个相对独立的阶段。首先产生有序子文件即___________;然后对它们进行__________,直至整个文件有序为止。
10.文件的组织方式有_________________等三种;顺序文件又可分为_________________两大类。
三、算法(共70分)
要求:对1、2、3题,在它们的下划线处填空;对4、5、6、7题,从第7题以下的空白纸张处开始书写,标明题号且只写出最终结果即可。
1. 算法填空题 (12分)
 Int Search_Bin(SSTable ST, KeyType key) {
在有序表ST中折半查找其关键字等于key的数据元素。若找到,则函数值为该元素在表中的位置,否则为0。
 Low =1; high=ST.length;
While (__________________){
mid=___________

____________;
if EQ(key, ST.elem[mid].key) return mid;
else if LT( key, ST.elem[mid].key) high=______________;
else low=______________;
}
return 0;
 }
2. 算法填空题 (9分)
中序遍历二叉树T的递归算法,对数据元素操作调用函数printf()。
 struct TNode{
char data;
struct TNode * lchild, * rchild;
 } 
 InOrderTraverse(struct TNode *T){
if (T){
InOrderTraverse(______________);
printf("%c",______________);
InOrderTraverse(______________);
}
 } 
3. 算法填空 (9分)
 typedef struct{
char *base;
char *top;
int stacksize;
 }SqStack;
 void Pop(SqStack *S0, char *e){
//若栈不空,则删除栈顶元素,用e返回其值。
if(S0->top= =_____________) return;
______________;
*e=*(________________);
 } 
4. 给出一整数序列(4,2,5,6, 3),对其进行从小到大排序,分别选用直接插入排序、2—路归并排序及快速排序三种方法,写出这三种方法的一趟排序结果。(10分)
5. 已知一颗3阶的B-树(见下图),依次插入关键字3及90,分别写出每插入一个关键字后所生成的B-树? (10分)。



6. 已知一无向带权图(见下图),写出其最小生成树 (10分)。



7. 已知4个结点的权值为{20,30,32,40,78},构造一颗赫夫曼树,并写出其赫夫曼编码 (10分)。





相关文档
最新文档