数据结构题库.docx
- 文档编号:10732746
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:24
- 大小:347.43KB
数据结构题库.docx
《数据结构题库.docx》由会员分享,可在线阅读,更多相关《数据结构题库.docx(24页珍藏版)》请在冰豆网上搜索。
数据结构题库
2013-2014学年二学期数据结构期末考试模拟试卷(1~6卷)
一、应用题(3小题,共24分)
1已知某字符串S中共有8种字符,各种字符分别出现2次、1次、4次、5次、7次、3
次、4次和9次,对该字符串用[0,1]进行前缀编码,问该字符串的编码至少有多少位。
【解答】以各字符出现的次数作为叶子结点的权值构造的哈夫曼编码树如图所示。
其带权路
径长度=2X5+1X5+3X4+5X3+9X2+4X3+4X3+7X2=98,所以,该字符串的编码长度至少为98位。
2.已知关键码序列为(,,,,,,,,,,,),散列表的地址空间为0~16,设散列函
数为H(x)=:
2」(取下整数),其中i为关键码中第一个字母在字母表中的序号,采用链地址法处理冲突构造散列表,并求等概率情况下查找成功的平均查找长度。
【解答】H()=10/2=5,H()=6/2=3,H()=13/2=6,H()=1/2=0
H()=13/2=6,H()=10/25,H()=10/25,H()=1/2=0
H()=19/2=8,H()=15/2=7,H()=14/2=7,H()=4/2=2
采用链地址法处理冲突,得到的开散列表如下:
*
3.分析下面各程序段的时间复杂度
(1)s1(n)
{10;
(1V)
{P*;}
(s);
}——0(n)
(2)s2(n)
00;
(1<);
(1<)
(1<)
2
;——0(n)
1•下述算法的功能是什么?
ListNode*Demol(LinkListUListNode*p)
("L是有头结点的单琏表
ListNade*q=L->nezt;
(1)v-
(1)返回结点*p的直接前趋结点地址。
q=q'>nestp
if(q)returnq;
elsetrrcr(^*pnotmL71)P
(2)
7oidDemo2(ListNode^p^LStNode
■//p/q是琏表中朗
(2)交换结点*p和结点*q(p和q的值不变)。
萌个结点
DataTypetemp;temp=p->data;p->data=q->data.Pq->data^temp;
1.
对给定的一组权值W=(5,2,9,11,8,3,7),试构造相应的哈夫曼树,并计算它的带权路径长度。
【解答】构造的哈夫曼树如图所示。
2X4+3X4+5X3+7X3+8X3+9X2+11X2=120
2.已知散列函数H(k)12,键值序列为(25,37,52,43,84,99,120,15,26,11,70,82),采用链表法处理冲突,试构造散列表。
【解答】H(25)=1,H(37)=1,H(52)=4,H(43)=7,H(84)=0,H(99)=3,
H(120)=0,H(15)=3,H(26)=2,H(11)=11,H(70)=10,H(82)=10
构造的开散列表如下:
3.分析下面各程序段的时间复杂度
(1)
(0<)
(0<)
A[i][j]
——O(n*m)
(2)
0;
(0<)(0<)[i][j];
;
-O(n2)
(3)
;;;
-0
(1)
3•设无向图G(所下图所示),要求给出从1出发对该图进行深度优先和广度优先遍历的序列。
深度:
125364,广度:
123456(不唯一)
广度优先遍历序列为:
1,2,4,3,5,6
4•已知无向图G的邻接表如图所示,分别写出从顶点1出发的深度遍历和广度遍历序列。
二、判断正误(7小题,共14分)
1•线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。
(V)
2•一个栈的输入序列为:
A,B,C,D,可以得到输出序列:
C,A,B,Do(X)
3.稀疏矩阵压缩存储后,必会失去随机存取功能。
(V)
【解答】深度优先遍历序列为:
1,2,3,4,5,6
4•如果某个有向图的邻接表中第i条单链表为空,则第i个顶点的出度为零。
(V)
5.用邻接矩阵存储图,所占用的存储空间大小只与图中顶点个数有关,而与图的边数无关。
(V)
6.向二叉排序树中插入一个结点需要比较的次数可能大于该二叉树的高度。
(X)
7.逻辑结构与数据元素本身的内容和形式无关。
(V)
1•对链表进行插入和删除操作时不必移动链表中结点。
(V)
3•如果两个串含有相同的字符,则说明它们相等。
(X)
4.在线索二叉树中,任一结点均有指向其前趋和后继的线索。
(X)
5.带权无向图的最小生成树是唯一的。
(X)
6.稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0元素。
(V)
7.无向图的邻接矩阵一定是对称的,有向图的邻接矩阵一定是不对称的。
(X)
&分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。
(V)
1.由树转化成二叉树,该二叉树的右子树不一定为空。
(X)
2.稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0元素。
(V)
4.分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。
(V)
5.设初始记录关键字基本有序,则快速排序算法的时间复杂度为0(2n)。
(X)
6.每种数据结构都具备三个基本操作:
插入、删除和查找。
(X
1.顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
(X)
2.在线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。
V
3.链表的每个结点都恰好包含一个指针域。
(X)
4.有向图的邻接表和逆邻接表中表结点的个数不一定相等。
(X)
5.对连通图进行深度优先遍历可以访问到该图中的所有顶点。
(V)
6.当装填因子小于1时,向散列表中存储元素时不会引起冲突。
(X)
2.线性表的逻辑顺序和存储顺序总是一致的。
(X)
3.非空的双向循环链表中任何结点的前驱指针均不为空。
(V)
4.子串“”在主串“”中的位置为2o(V)
5•数组是一种复杂的数据结构,数组元素之间的关系既不是线性的,也不是树形的。
(X)
7•用邻接矩阵作为图的存储结构时,则其所占用的存储空间与图中顶点数无关而与图中边数有关。
(X)
9•当装填因子小于1时,向散列表中存储元素时不会引起冲突。
(X)
10.散列技术的查找效率主要取决于散列函数和处理冲突的方法。
(X)
1线性结构的基本特征是:
每个元素有且仅有一个直接前驱和一个直接后继。
(X)
2.稀疏矩阵压缩存储后,必会失去随机存取功能。
(V)
5.对任意一个图,从某顶点出发进行一次深度优先或广度优先遍历,可访问图的所有顶点。
(X)
6•当向二叉排序树中插入一个结点,则该结点一定成为叶子结点。
(V)
7•数据的逻辑结构和数据的存储结构是相同的。
(X)
&数据的存储结构是数据的逻辑结构的存储映像。
(V)三、单项选择题(8小题,共16分)
1下面关于线性表的叙述错误的是(D)。
A线性表采用顺序存储必须占用一片连续的存储空间B线性表采用链式存储不必占用一片连续的存储空间C线性表采用链式存储便于插入和删除操作的实现D线性表采用顺序存储便于插入和删除操作的实现
2•单链表的存储密度(C)。
4•若串"",其子串的数目最多是:
(C)。
A.35B.36C.37D.38
5•二叉排序树中,最小值结点的(A)。
A左指针一定为空B右指针一定为空
A奇数B偶数C素数D充分大的数
7•用直接插入排序对下面四个序列进行由小到大排序,元素比较次数最少的是(B)o
A94,32,40,90,80,46,21,69
C32,40,21,46,69,94,90,80
B21,32,46,40,80,69,90,94
D90,69,80,46,21,32,94,40
1.使用双链表存储线性表,其优点是可以(B)。
A提高查找速度B更方便数据的插入和删除
C节约存储空间D很快回收存储空间
2.链表不具有的特点是(B)
A.不必事先估计存储空间B.可随机访问任一元素
C.插入删除不需要移动元素D.所需空间与线性表长度成正比
3.下面关于线性表的叙述错误的是(D)。
A线性表采用顺序存储必须占用一片连续的存储空间
B线性表采用链式存储不必占用一片连续的存储空间
C线性表采用链式存储便于插入和删除操作的实现
D线性表采用顺序存储便于插入和删除操作的实现
4.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较(D)个结点。
AnB2C
(1)/2D
(1)/2
5•在C或语言中,一个顺序栈一旦被声明,其占用空间的大小(A)。
9.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为(D)
A.eB.2eC.n2-eD.n2-2e
10.
设F是由T1、T2和T3三棵树组成的森林,与F对应的二叉树为B,T1、T2和T3的结
点数分别为N1、N2和N3,则二叉树B的根结点的左子树的结点数为(A)。
11.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是(D)。
A空或只有一个结点B高度等于其结点数
C任一结点无左孩子D任一结点无右孩子
12.在堆排序和快速排序中,如果从平均情况下排序的速度最快的角度来考虑应最好选择快速)排序,如果从节省存储空间的角度来考虑则最好选择(堆)排序。
13.设有以下四种排序方法,则(B)的空间复杂度最大。
14•数据结构中,与所使用的计算机无关的是数据的(C)
A.存储结构B•物理结构C•逻辑结构D•物理和存储结构
15.数据的基本单位是(B)。
A.数据结构B.数据元素C.数据项D.文件
1.已知一个顺序存储的线性表,设每个结点占m个存储单元,若第一个结点的地址为B,
则第i个结点的地址为(A)。
A.
(1)*mB.*mC.*mD.
(1)*m3•若链表中最常用的操作是在最后一个结点之后插入一个结点和删除第一个结点,则采用(D)存储方法最节省时间。
A单链表B带头指针的单循环链表
C双链表D带尾指针的单循环链表4.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印缓冲区,该缓冲区应该是一个(B)结构。
A栈B队列C数组D线性表
5.用链接方式存储的队列,在进行插入运算时(D).
A.仅修改头指针B.头、尾指针都要修改
C.仅修改尾指针D.头、尾指针可能都要修改
6.
以下论述正确的是(C)。
7.
11.二叉排序树中左子树上所有结点的值均(A)根结点的值。
AC=D
14.一组记录的关键码为{46,79,56,38,40,84},则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为(A)。
A{40,38,46,56,79,84}B{40,38,46,79,56,84}
C{40,38,46,84,56,79}D{84,79,56,46,40,38}
15•对一个算法的评价,不包括如下(B)方面的内容。
A.健壮性和可读性B.并行性C.正确性D.时空复杂度
2•设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,
则该操作的时间复杂度为(D)。
A0(2n)B0
(1)CO(n2)DO(n)
A线性表&设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是(
A空或只有一个结点B高度等于其结点数
D)。
C任一结点无左孩子D任一结点无右孩子
10.下图为由7个顶点组成的无向图。
从顶点1出发,对它进行广度优先遍历得到的顶点
序列是。
A、1534267B、1726453C、1354276D、1247653
11.下列各种排序算法中平均时间复杂度为0(门2)是(D)。
A快速排序B堆排序C归并排序D冒泡排序
2•对线性表,在下列哪种情况下应当采用链表表示?
(B)
A.经常需要随机地存取元素B.经常需要进行插入和删除操作
C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变
3.若用一个大小为6的数组来实现循环队列,且当前和的值分别为3和0,当从队列中
删除一个元素,再加入两个元素后,和的值分别为(B)。
6•任何一棵二叉树的叶子结点在前序、中序、后序遍历序列中的相对次序(
A)。
A肯定不发生改变
B肯定发生改变C不能确定D有时发生变化
A.5和1B.4和2C.2和4D.1和5
则该三叉链权中有(C)个度数为0的结点。
7•设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为(A)。
A0()BO(n2)C0()DO(n3)
&下面关于工程计划的网的叙述中,不正确的是(B)
A关键活动不按期完成就会影响整个工程的完成时间
B任何一个关键活动提前完成,那么整个工程将会提前完成
C所有的关键活动都提前完成,那么整个工程将会提前完成
D某些关键活动若提前完成,那么整个工程将会提前完
9.下列命题正确的是(B)。
A一个图的邻接矩阵表示是唯一的,邻接表表示也唯一
B一个图的邻接矩阵表示是唯一的,邻接表表示不唯一
C一个图的邻接矩阵表示不唯一的,邻接表表示是唯一
D一个图的邻接矩阵表示不唯一的,邻接表表示也不唯一
10.设某散列表的长度为100,散列函数H(k)%P,则P通常情况下最好选择(B)。
A99B97C91D93
11•设一组初始记录关键字序列为(Q,H,C,Y,P,A,M,S,R,D,F,X),则按字母
升序的第一
趟冒泡排
序结
束后
的结果是(
D
)。
A
F,
H,
C,
D,
P,
A,
M,
Q,
R,
S,
Y,
X
B
P,
A,
C,
S,
Q,
D,
F,
X,
R,
H,
M,
Y
C
A,
D,
C,
R,
F,
Q,
M,
S,
Y,
P,
H,
X
D
H,
C,
Q,
P,
A,
M,
S,
R,
D,
F,
X,
Y
1.线性表的链式链式存储结构是一种(B)的存储结构。
A、随机存取B、顺序存取C、索引存取D、存取
3.设计一个判别表达式中左右括号是否配对的算法,采用(B)数据结构最佳
A顺序表B栈C队列D链表
4•设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,—个元素出栈后即进入队列Q,若6个元素出队的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是(C)。
A6B4C3D2
5.设数组[m]作为循环队列的存储空间,为队头指针,为队尾指针,则执行出队操作后其头指针值为(D)
A.1B.
(1)%
(1)
C.
(1)D.
(1)
7•广义表(a,b,(c,(d)))的表尾是(D)o
A(d)B(c,(d))CbD(b,(c,(d)))
9.线索二叉树中某结点R没有左孩子的充要条件是(C)o
AB0C1D
10.设一棵完全二叉树中有65个结点,则该完全二叉树的深度为(B)。
A8B7C6D5
12.G是一个非连通无向图,共有28条边,则该图至少有(D)个顶点。
A6B7C8D9
14.设有6个结点的无向图,该图至少应有(A)条边才能确保是一个连通图。
A.5B.6C.7D.8
15.散列表的地址区间为0-17,散列函数为H(K)17。
采用线性探测法处理冲突,并将关键字序列26,25,72,38,8,18,59依次存储到散列表中。
存放元素59需要搜索的次数是
C)
A、2B、3C、4D、5
16.
B)方法最好。
设有5000个元素,希望用最快的速度挑选出前10个最大的,采用(
A快速排序B堆排序C希尔排序D归并排序
四、算法设计题(2小题,共24分)
1.设计在顺序存储结构上实现求子串算法。
(s[],
,t[])
{
(s);
(<1>)("");
(1>)("");
{(10;i<1)
t[j][i];t[j]='\0';
}
}
2.编写算法,要求输出二叉树后序遍历序列的逆序。
(*H)
{(H)
{(>);
(>);
(>);
2.设计顺序查找算法,将哨兵设在下标高端。
【解答】将哨兵设置在下标高端,表示从数组的低端开始查找,在查找不成功的情况下,算法自动在哨兵处终止。
具体算法如下:
顺序查找算法Search
intSearch(intr[],tntn,inik)
{
i・】.r【nH卜比
while 卄; returni%(n+1); } 1设计判断单链表中元素是否是递增的算法。 (*) { (0>0) (1); (>;0;>) (>>>)(0); (1); } 3•设计一个在链式存储结构上统计二叉树中结点个数的算法。 (*) { (0) {;(>);(>);} } 1.已知一个有向图的邻接表,编写算法建立其逆邻接表。 【解答】在有向图中,若邻接表中顶点有邻接点,在逆邻接表中一定有邻接点,由此得到本题算法思路: 首先将逆邻接表的表头结点域置空,然后逐行将表头结点的邻接点进行转化。 建2逆邻接表算法List| voidList(AdjListA,AdjiList針) ( BvertexNutn^A.vatexNum; B.arcNum-A.arcNum; far(i=0;i B.adjlistfi]firstedge^dSIULL; for(i=0;i { p1=Aadjlist[i].firstedge; while(pl) ( j=pl->adjvcx, p2=11^ArcNode,p2->adjve! ^=i' p2->ne ) } 五、填空题(6小题,共12分) 1.在单链表中要在已知结点*P之前插入一个新结点,需找到*P的直接前趋结点的地址, 其查找的时间复杂度为(0(n))。 2.设无向图G中有n个顶点e条边,所有顶点的度数之和为m,则e和m有(2e)关系。 3.顺序查找技术适合于存储结构为(顺序存储和链接存储)的线性表 4•对n个元素进行起泡排序,在(正序)情况下比较的次数最少,其比较次数为 ()。 5.快速排序算法的空间复杂度平均情况下为(0(2n)),最坏的情况下为 (0(n))。 6•树形结构结构中的元素之间存在(一对多)的关系 3•设循环队列存放在向量[0]中,若用牺牲一个单元的办法来区分队满和队空(设队尾指针),则队满的条件为( (1)% (1);)。 4•设二叉树中结点的两个指针域分别为和,则判断指针变量p所指向的结点为叶子结点的 条件是(>0>0)。 5•深度为k的完全二叉树中最少有(21)个结点。 6•设一棵二叉树的前序序列为,则有(5)种不同的二叉树可以得到这种序列。 7•对于一棵具有n个结点的二叉树,用二叉链表存储时,其指针总数为(2n)个,其 中 (1)个用于指向孩子, (1)个指针是空闲的。 &度不为(零)的结点称为分支结点或非终端结点。 树中各结点度的(最大值)称为 树的度。 9•设有向图G用邻接矩阵A[n][n]作为存储结构,则该邻接矩阵中第i行上所有元素之和 等于顶点i的(出度),第i列上所有元素之和等于顶点i的(入度)。 10.N个顶点的强连通图的边数至少有(N) 11.数据的物理结构主要包括(顺序存储结构)和(链式存储结构)两种情 况。 12.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为(n (1)/2) 13•算法的空间复杂度是指(执行过程中所需要的辅助存储空间) 14•顺序存储结构中数据元素之间的逻辑关系是由(存储位置)表示的,链接存储结构 中的数据元素之间的逻辑关系是由(指针)表示的。 15.若算法中的语句执行次数之和为T(n)=525n+4nn,则算法的时间复杂度是( O(nn))。 5•广义表(a,(),(()))的长度是(5),深度是(3)。 6.—棵二叉树的第i(i层最多有(21)个结点;一棵有n(n>0)个结点的满二叉树共 有( (1)/2)个叶子结点和( (1)/2)个非终端结点。 8.评价基于比较的排序算法的时间性能,主要标准是(关键码的比较次数)和(记录的 移动次数)。 9.实现数据结构的基本存储方法有: (顺序存储结构),(链接存储结构)。 1.循环队列的队首指针为,队尾指针为,则队空的条件为()。 2.串是一种特殊的线性表,其特殊性体现在(数据元素是一个字符)。 3.已知线性表A采用顺序存储结构,每个元素占用4个存储单元,第9个元素的地址为 144,则第一个元素的地址是(112)。 4.完全二叉树总结点数为N,若N为奇数,则叶子结点数为( (1)/2);若N为偶数, 则叶子结点数为 (2)。 5.已知一棵完全二叉树中共有768结点,则该树中共有(384)个叶子结点。 6.设一棵完全二叉树中有500个结点,则该二叉树的深度为(9);若用二叉链表作为该 完全二叉树的存储结构,则共有(501)个空指针域。 7.对于含有n个顶点e条边的连通图,利用算法求最小生成树的时间复杂度为(O(n)), 利用算法求最小生成树的时间复杂度为(OQe))。 8.若G为有向图,则至少有(0)条边,至多有(n (1))条边 9.表示一个有100个顶点,1000条边的有向图的邻接矩阵有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 题库