数据结构试题含答案Word格式文档下载.docx
《数据结构试题含答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构试题含答案Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
20.算法的时间复杂性越好,可读性就越差;
反之,算法的可读性越好,则时间复杂性就越差。
二.选择题
1.若对编号为1,2,3的列车车厢依次通过扳道栈进行调度,不能得到(e)的序列。
a:
1,2,3b:
1,3,2c:
2,1,3d:
2,3,1e:
3,1,2f:
3,2,1
2.递归程序可借助于(b)转化为非递归程序。
线性表b:
栈c:
队列d:
数组
3.在下列数据结构中(c)具有先进先出(FIFO)特性,
(b)具有先进后出(FILO)特性。
a:
栈c:
广义表
4.对字符串s=’data-structure’执行操作replace(s,substring(s,6,8),’bas’)
的结果是(d)。
‘database’b:
‘data-base’c:
‘bas’d:
‘data-basucture’
5.设有二维数组A5x7,每一元素用相邻的4个字节存储,存储器按字节编址。
已知A的起始地址为100。
则按行存储时,元素A06的第一个字节的地址是(d)
按列存储时,元素A06的第一个字节的地址是(a)
220b:
200c:
140d:
124
6.对广义表A=((a,(b)),(c,()),d)执行操作gettail(gethead(gettail(A)))
的结果是:
(b)。
()b:
(())c:
dd:
(d)
7.假设用于通讯的电文仅由6个字符组成,字母在电文中出现的频率分别为7,19,22,6,32,14。
若为这6个字母设计哈夫曼编码(设生成新的二叉树的规则是按给出的次序从左至右的结合,新生成的二叉树总是插入在最右),则频率为7的字符编码是(g),频率为32的字符编码是(c)。
00b:
01c:
10d:
11
e:
011f:
110g:
1110h:
1111
8.对二叉排序树(b)可得到有序序列。
a:
按层遍历b:
前序遍历c:
中序遍历d:
后序遍历
9.已知某树的先根遍历次序为abcdefg,后根遍历次序为cdebgfa。
若将该树转换为二叉树,其后序遍历次序为(d)。
abcdefgb:
cdebgfac:
cdegbfad:
edcgfba
10.对一棵完全二叉树进行层序编号。
则编号为n的结点若存在右孩子,其位序是(d)。
编号为n的结点若存在双亲,其位置是(a)。
n/2b:
2nc:
2n-1d:
2n+1e:
nf:
2(n+1)
11.关键路径是指在只有一个源点和一个汇点的有向无环网中源点至汇点(c)的路径。
弧的数目最多b:
弧的数目最少c:
权值之和最大d:
权值之和最小
12.哈希表的查找效率取决于(d)。
哈希函数b:
处理冲突的方法。
c:
哈希表的装填因子。
d:
以上都是
13.从逻辑上可以把数据结构分成(c)。
A.动态结构和静态结构B.顺序组织和链接组织
C.线性结构和非线性结构D.基本类型和组合类型
14.在计算递归函数时,如不用递归过程,应借助于(b)这种数据结构。
A.线性表B.栈C.队列D.双向队列
15.若已知某二叉树的中序和后序遍历序列分别BCAEFD和CBFEDA,则该二叉树的先序序列为(a)。
A.ABCDEFB.ABDCEFC.ABDCFED.ACBDFE
16.当待排序序列的关键字次序为倒序时,若需为之进行正序排序,下列方案中(d)为佳。
A.起泡排序B.快速排序
C.直接插入排序D.简单选择排序
17.若从二叉树的根结点到其它任一结点的路径上所经过的结点序列按其关键字递增有序,则该二叉树是(c)。
A.二叉排序树B.赫夫曼树C.堆D.平衡二叉树
18.下图所有可能的拓扑序列有(b)种。
A.2B.3C.4D.5
19.下列排序算法中,(d)算法可能会出现:
初始数据为正序时,花费的时间反而最多。
A.堆排序B.起泡排序C.归并排序D.快速排序
20.右图为一棵3阶B-树。
20,25
在该树上插入元素15
后的B-树是(c)。
10,142135
A.15,25B.20,25
10,1420,213510,1415,2135
C.20D.14,25
142510,1520,2135
10152135
21.设森林F中有三棵树,第一、第二和第三棵树的结点个数分别为m1、m2和m3,则与森林F对应的二叉树根结点的右子树上的结点个数是(d)。
A.m1B.m1+m2C.m3D.m2+m3
22.根据插入次序(80,90,100,110,85,70,75,60,72)建立二叉排序树。
图(a)是最终变化的结果。
若仍以该插入次序建立平衡二叉树。
图(c)是最终变化的结果。
8080
70907590
607585100607085100
7211072110
b:
9090
7510080100
7080110757085110
6072856072
23.设输入序列为20,45,30,89,70,38,62,19依次插入到一棵2-3树中(初始状态为空),该B-树为(b)。
再删除38,该B-树为(f)。
(3062)(45)
(19,20)(3845)(70,89)(30)(70)
(1920)(38)(62)(89)
(4570)(45)
(20)(62)(89)(20)(70)
(19)(30)(19)(30,38)(62)(89)
(3070)(45)
(19,20)(4562)(89)(20)(70)
(19)(30)(62)(89)
e:
f:
24.已知一组待排序的记录关键字初始排列如下:
45,34,87,25,67,43,11,66,27,78。
(g)是快速排序法一趟排序的结果;
(a)是希尔排序法(初始步长为4)一趟排序的结果;
(b)是初始堆(大堆顶);
(d)是基数排序法一趟排序的结果。
A.27,34,11,25,45,43,87,66,67,78B.87,78,45,66,67,43,11,25,27,34
C.11,43,34,25,45,66,27,67,87,78D.11,43,34,45,25,66,87,67,27,78
E.34,45,25,67,43,11,66,27,78,87F.87,45,11,25,34,78,27,66,67,43
G.27,34,11,25,43,45,67,66,87,78H.34,11,27,25,43,78,45,67,66,87
25.若有序表中关键字序列为:
14,20,25,32,34,45,57,69,77,83,92。
对其进行折半查找,则在等概率情况下,查找成功时的平均查找长度是(c)。
查找32时需进行(c)次比较。
A.1B.2C.3D.4
26.设一棵二叉树BT的存储结构如下:
12345678
lchild23006000
dataABCDEFGH
rchild05408700
其中lchild,rchild分别为结点的左、右孩子指针域,data为结点的数据域。
则
该二叉树的高度为(d);
第3层有(a)个结点(根结点为第1层)。
A.2B.3C.4D.5
27.一个连通图的最小生成树(b)。
A.只有一棵B.有一棵或多棵C.一定有多棵D.可能不存在
28.若某二叉树有20个叶子结点,有20个结点仅有一个孩子,则该二叉树的总结点数是(c)。
A.40B.55C.59D.61
29.已知哈希表地址空间为A[0..8],哈希函数为H(k)=kmod7,采用线性探测再散列处理冲突。
若依次将数据序列:
76,45,88,21,94,77,17存入该散列表中,则元素17存储的下标为(f);
在等概率情况下查找成功的平均查找长度为(c)。
A.0B.1C.2D.3
E.4F.5G.6H.7
30.已知某有向图的邻接表存储结构如图所示。
根据存储结构,依教材中的算法其深度优先遍历次序为(d)。
广度优先遍历次序为(c)。
各强连通分量的顶点集为()。
abcde.b:
edcba.c:
ecdab.d:
ecadb.
abc及edf:
ac及bedg:
ab及cedh:
bc及aed
31.已知某无向图的邻接表如下所示;
()是其原图。
()是按该邻接表遍历所得深度优先生成树。
()是按该邻接表遍历所得广度优先生成树。
0a321
1b30
2c430
3d5210
4e52
5f43
A.abB.abC.ab
cdcdcd
efefef
D.abE.abF.ab
dccdcd
feefef
32.若顺序表中各结点的查找概率不等,则可用如下策略提高顺序查找的效率:
若找到指定
的结点,将该结点与其后继(若存在)结点交换位置,使得经常被查找的结点逐渐移至
表尾。
以下为据此策略编写的算法,请选择适当的内容,完成此功能。
顺序表的存储结构为:
typedefstruct{
ElemType*elem;
//数据元素存储空间,0号单元作监视哨
intlength;
//表长度
}SSTable;
intsearch_seq(SSTableST,KeyTypekey)
{//在顺序表ST中顺序查找关键字等于key的数据元素。
//若找到,则将该元素与其后继交换位置,并返回其在表中的位置,否则为0。
ST.elem[0].key=key;
i=ST.length;
while(ST.elem[i].key!
=key);
if()
{ST.elem[i]←→ST.elem[i+1];
;
}
returni;
}
A.i>
0B.i>
=0C.i<
ST.lengthD.i<
=ST.length
E.i++F.i--G.A和C同时满足H.B和D同时满足
33.下列函数为堆排序中的堆调整过程(调整H.r[s]的关键字,使H.r[s..m]成为一小顶堆)。
请在“”处填上合适的内容,完成该算法。
Voidheapadjust(heaptype&
H,ints,intm){
rc=H.r[s];
for(j=2*s;
j<
=m;
j*=2){
if(j<
m&
&
)++j;
if()break;
H.r[s]=H.r[j];
s=j;
;
}//heapadjust
(H.r[j].key>
H.r[j+1].key);
b:
!
(rc.key<
H.r[j].key);
(H.r[j].key<
(rc.key>
H.r[j].key);
H.r[s]=rc;
f:
rc=H.r[s];
g:
h.r[j]=rc;
h:
rc=H.r[j];
三.算法设计题
1.单链表结点的类型定义如下:
typedefstructLNode{
intdata;
structLNode*next;
}LNode,*Linklist;
写一算法,Contrary(linklist&
L),对一带头结点且仅设尾指针L的循环单链表
就地逆置。
(即表头变表尾,表尾变表头。
2.二叉树用二叉链表存储表示。
typedefstructBiTNode{
TelemTypedata;
StructBiTNode*lchild,*rchild;
}BiTNode,*BiTree;
试编写销毁二叉树T的算法DestroyBiTree(BiTree&
T)。
3.设带头结点的单链表中的元素以值非递减有序排列,试编写算法,删除表中所有值相同的多余元素。
单链表结点的类型定义如下:
typedefstructLNode{
StructLNode*next;
}LNode,*LinkList;
4.二叉树用二叉链表存储表示。
试编写算法,求元素值为x的结点的左孩子(返回x的左孩子的指针)。
THANKS!
!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考