奥赛数据结构题汇总Word格式文档下载.docx
《奥赛数据结构题汇总Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《奥赛数据结构题汇总Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
8.下列序列中,是执行第一趟快速排序后得到的序列(排序的关键字类型是字符串)。
(1)[da,ax,eb,de,bb]ff[ha,gc]
(2)[cd,eb,ax,da]ff[ha,gc,bb]
(3)[gc,ax,eb,cd,bb]ff[da,ha](4)[ax,bb,cd,da]ff[eb,gc,ha]
9.用n个键值构造一棵二叉排序树,最低高度为。
(1)n/2
(2)n(3)[log2n](4)[log2n+1]
10.二分查找法要求查找表中各元素的键值必须是排列。
(1)递增或递减
(2)递增(3)递减(4)无序
11.对于键值序列(12,13,11,18,60,15,7,18,25,100),用筛选法建堆,必须从键值为的结点开始。
(1)100
(2)12(3)60(4)15
三、填空题
1.在带有头结点的单链表L中,第一个元素结点的指针是。
2.在双循环链表中,在指针P所指结点前插入指针S所指的结点,需执行下列语句:
S↑.next:
=P;
S↑.prior:
=P↑.prior;
P↑.prior:
=S;
:
A
/\
BC
/\\
DEF
/
H
3.[1..maxsize]为一个顺序存储的栈,变量top指示栈顶位置,栈为空的条件是,栈为满的条件是。
4.具有100个结点的完全二叉树的深度为。
5.有向图G用邻接矩阵A[1..n,1..n]存储,其第i行的所有元素之和等于顶点i的。
6.在顺序文件中,要存取第i个记录,必须先存取。
7.对于下面的二叉树,按中序遍历所得到的结点序列为。
8.分别采用堆排序、快速排序、插入排序和归并排序算法对初始状态为递增序列的表按递增顺序排序,最省时间的是算法,最费时间的是算法。
9.对下图所示的网,执行prim算法可得到最小生成树,试在下表的空白处填上括当的内容,以说明该算法的执行过程。
顶点
1
3
4
U
V
(U,V)代价
(2,1)∞
(2,3)4
(2,4)2
{2}
{1,3,4}
{2,4}
{1,3}
(3,1)1
{2,3,4}
{1}
{2,3,4,1}
10.设散列函数为H(key),用拉链(链地址)法解决冲突,H的值域为0,…,n-1,构造的散列表类型如下:
TYPElink=↑node;
Node=RECORD
key:
keytype;
next:
link;
…
END;
Openhash=array[0..n-1]oflink;
请在下列算法划线处填上适当内容,以完成在散列表HP中查找键值等于K的结点,若查找成功,返回该结点的指针,否则返回空指针。
Functionresearch(K:
HP:
openhash):
BEGIN
I:
=H(K);
SUC:
=false;
;
while(P<
>
NIL)and(notsuc)do
ifP↑.key<
K
then
elsesuc:
=true;
return(P)
END
四、应用题
1.已知二叉树的后序和中序序列如下,构造出该二叉树。
后序序列:
ABCDEFG
中序序列:
ACBGEDF
2.有一组关键码序列(38,19,65,13,97,49,41,95,1,73),采用冒泡排序方法由小到大进行排序,请写出每趟的结果。
3.设图G=(V,E),V={1,2,3,4,5,6},E={<
1,2>
,<
1,3>
2,5>
3,6>
6,5>
5,4>
6,4>
}。
请写出图G中顶点的所有拓扑序列。
4.设散列函数为H(K)=Kmod7,闭散列表的地址空间为0,…,6,开始时散列表为空,用线性探测法解决冲突,请画出依次插入键值23,14,9,6,30,12,18后的散列表。
5.对下面两棵二叉树,分别画出它们的顺序存储结构。
DEF
/\
IJ
/\/\
DEFG
/\/
IJK
6.已知图G的邻接表如下,画出图G的所有连通分量。
数据结构练习二
一、选择题
1.在下列备选答案中选出一个正确的,将其号码填在“”上。
1.若线性表最常用的操作是存取第i个元素及其前趋的值,则采用存储方式节省时间。
a.单链表b.双链我c.单循环链表d.顺序表
2.对二叉树从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用次序的遍历实现编号。
a.先序b.中序c.后序d.从根开始的层次遍历
3.某二叉树的先序序列和后序序列正好相反,则该二叉树一定是的二叉树。
a.空或只有一个结点b.高度等于其结点数
c.任一结点无左孩子d.任一结点无右孩子
4.下列排序算法中,时间复杂度不受数据初始状态影响,恒为O(nlogzn)的是。
a.堆排序b.冒泡排序c.直接选择排序d.快速排序
5.下列排序算法中,算法可能会出现下面情况:
初始数据有序时,花费的时间反而最多。
a.堆排序b.冒泡排序c.快速排序d.SHELL排序
三、填空
1.在单链表中,删除指针P所指结点的后继结点的语句是。
2.取出广义表A:
((x,y,2),(a,b,c,d))中原子b的函数是。
3.已知完全-y.树的第八层有8个结点,则其叶子结点数是。
4.将下三角矩阵A[1..8,L.8]的下三角部分逐行地存储到起始地址为1000的内存单元中,已知每个元素占4个单元,则A[?
,5]的地址为。
5.有n个顶点的强连通有向图G至少有条弧。
6.求最短路径的DIJKSTRA算法的时间复杂度为。
7.高度为5的三阶B树至少有个结点。
8.在有序表A[1..20]中,采用二分查找算法查找元素值等于A[12]的元素,所比较过的元素的下标依次为。
9.直接选择排序算法所执行的元素交换次数最多为。
10.下列排序算法中,稳定的排序算法是(选择排序,堆排序,快速排序,直接插入排序)。
四、解答下列各题(30分)
1.一棵二叉树的先序序列和中序序列分别如下,画出该二叉树。
(5分)
先序序列ABCDEFGHIJ
中序序列CBEDAGHFJl
2.对下面给出的数据序列,构造一棵哈夫曼树,并求出其带权路径长度。
(6分)
4,5,6,7,10,12,15,18,23
3.图G的邻接表如下页,完成下列各题:
(7分)
(1)画出从顶点5出发进行广度遍历所生成的生成树。
(2)判断其中是否存在有向回路,若不存在,求出其拓扑序列。
4.对下列数据表,写出采用快速排序算法排序的每一趟的结果。
(6分)
(60,20,3l,1,5,44,55,61,200,30,80,150,4,29)
5.已知哈希表地址空间为0..8,哈希函数为H(k)=kmod7,采用线性探查法处理冲突。
将下面数据序列依次存入该散列表中,并求出在等概率下的平均查找长度。
(6分)
100,20,21,35,3,78,99,45
2
5
6
7
8
A:
五、算法设计(共30分)
1.已知单循环链表L中至少有两个结点,每个结点的两个字段为data和next,其中字段data的类型为整型。
设计算法以判断该链表中的每个元素的值是否小于其后续两个结点的值的和,若满足,返回true,否则返回false。
(8分)
2.设计算法按后序次序打印二叉树T中所有叶子结点的值,并返回其结点数。
(8分)
3.写出在二叉排序树中查找值为x的元素的算法。
4.设计算法按层次遍历二叉树T。
模拟试卷三
一、选择题(每小题2分,共20分),
在下列备选答案中选出一个正确的,将其号码填在“”上。
1.一个栈的输入序列为12345,则下列序列中不可能是栈的输出序列的是。
a.23415b.54132c.23145d.15432
2.设循环队列中数组的下标范围是l~n,其头尾指针分别为f和r,则其元素个数为
。
a. r-fb。
r-f+1c.(r-f)modn+ld.(r-f+n)modn
3.若某链表最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用存储方式最节省时间。
a.单链表b.双链表c.带头结点的双循环链表d.单循环链表
4.一棵非空的二叉树的先序序列和后序序列正好相反,则该二叉树一定满足 。
a.其中任意一结点均无左孩子 b.其中任意一结点均无右孩子
c.其中只有一个叶子结点 d.是任意一棵-y.树
5.一棵左右子树均不空的二叉树在先序线索化后,其空指针域数为 。
a.0 b.1 c.2 d.不确定
6.数组A[l..5,1..6]的每个元素占5个单元,将其按行优先次序存储在起始地址为lOOO的连续的内存单元中,则元素A[5,5]的地址为 。
a.1140 b.1145 c.1120 d.1125
7.求最短路径的DIJKSTRA算法的时间复杂度为 。
a.O(n) b.O(n+e)c.O(n2)d.O(n*e)
8.对有18个元素的有序表作二分查找,则查找A[3]的比较序列的下标为。
a.1,2,3 b.9,5,2,3 c.9,5,3 d.9,4,2,3
9.快速排序算法在最好情况下的时间复杂度为 。
a.O(n) b.O(nlo