燕山大学05年数据结构真题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
燕山大学2005年数据结构真题
一.按要求完成下列各题(50分)
1.判断下列叙述的对错.(10分)
(1)数据结构是一门研究非数值计算的程序设计中计算机的数据元素以及它们之间结构和运算等的学科.()
(2)数据结构可以形式化的定义为(K,R),其中K是数据元素的有限集合,R是K上运算的有限集合.()
(3)从逻辑关系上讲,数据结构主要分为两大类:线性结构和非线性结构.()
(4)同一数据逻辑结构中的所有数据元素都具有相同的特性是指数据元素所包含的数据项的个数都相等.()
(5)数据的逻辑结构与数据元素本身的内容和形式无关.()
2.指出如下算法的功能并求出其时间复杂度.(10分)
fact(int n)
{if(n<=1)return(1);
else return(n*fact(n-1));
}
3.设有一个双端队列,元素进入该队列的顺序是1,2,3,
4.试分别求出满足下列条件的输出序列.(10分)
(1)能由输入受限的双端队列得到,但不能由输出受限的双端队列得到的输出序列;
(2)能由输出受限的双端队列得到,但不能由输入受限的双端队列得到的输出序列;
(3)既不能由输入受限的双端队列得到,又不能由输出受限的双端队列得到的输出序列.
4.二叉树结点数值采用顺序存储结构,如下所示.(10分)
a b c d e f g h i j 1234567891011121314151617181920(1)画出该二叉树;
(2)写出前序遍历,中序遍历和后序遍历的结果;
(3)写出值为c的结点的父结点、左、右孩子结点的值;
(4)把该二叉树转化成一个森林.
5.已知一个无向图的邻接矩阵如下.(10分)
1 2 3 4 5
0 1 1 1 0 1
1 0 0 0 1 2
A= 1 0 0 1 1 3
1 0 1 0 1 4
0 1 1 1 0 5
(1)画出该图;
(2)画出该图对应的邻接表;
(3)写出对应该图从顶点1出发进行深度、广度优先搜索的结果.
二.写出下列各题的结果.(20分)
1.已知一个有序表的长度为12,如果用折半查找的方法在该有序表中查找一个元素,那么,平均查找长度应该是多少?
2.含有9个叶子结点的3阶B-树中至少有多少个非叶子结点?含有10个叶子结点的3阶B-树中至少有多少个非叶子结点?
3.含有12个结点的平衡二叉树的最大深度是多少?
4.举例说明稀尔排序是不稳定的排序方法.
三.回答下列各题(30分)
1.设有150个记录要存储到散列表中,要求利用线性探测法解决冲突,同时要求找到所需记录的平均比较次数不超过2次,试问散列表需要设计多大?
2.对n个元素进行初始建堆的过程中,最多做多少次数据比较(不用大O 表示法)?
3.静态索引结构和动态索引结构各有哪些优缺点?
四.算法填空(20分)
1.算法l1的功能是向二叉树b中插入一个结点s.
void l1 (b,s)
btree *b,*s;
{if(b==NULL)_____;
else if(s->data==b->data)
_____;
else if(s->data
_____;
if(s->data>b->data)
_____;
}
2.算法l2的功能是将至少有一个结点的单链表L逆置.L的头结点指针为head.
void l2(head)
node *head;
{node *p,*q,*r;
p=head;q=p->next;
while(_____)
{r=q->next;
q->next=p;
_____;
_____;
}
head->next=NULL;
_____;
五.按要求写出下列算法(30分)
1.有一个单链表,其结点的元素值以非递减有序排列,编写一个算法删除该单链表中多余的元素值相同的结点.
2.已知二叉树b采用链式存储结构,编写一个算法来计算二叉树b中具有双孩子的结点的个数.