数据结构文档格式.docx
- 文档编号:16839963
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:19
- 大小:726.33KB
数据结构文档格式.docx
《数据结构文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
将操作数依次写下来,再将算符插在它的两个操作数的后面。
12栈和队列是两种特殊的线性表,栈的操作特性是(),队列的操作特性是(),栈和队列的主要区别在于()。
【解答】后进先出,先进先出,对插入和删除操作限定的位置不同
13数组通常只有两种运算:
()和(),这决定了数组通常采用()结构来实现存储。
【解答】存取,修改,顺序存储
【分析】数组是一个具有固定格式和数量的数据集合,在数组上一般不能做插入、删除元素的操作。
除了初始化和销毁之外,在数组中通常只有存取和修改两种操作。
14二维数组A中行下标从10到20,列下标从5到10,按行优先存储,每个元素占4个存储单元,A[10][5]的存储地址是1000,则元素A[15][10]的存储地址是()。
【解答】1140
【分析】数组A中每行共有6个元素,元素A[15][10]的前面共存储了(15-10)×
6+5个元素,每个元素占4个存储单元,所以,其存储地址是1000+140=1140。
15设有一个10阶的对称矩阵A采用压缩存储,A[0][0]为第一个元素,其存储地址为d,每个元素占1个存储单元,则元素A[8][5]的存储地址为()。
【解答】d+41
【分析】元素A[8][5]的前面共存储了(1+2+…+8)+5=41个元素。
16稀疏矩阵一般压缩存储方法有两种,分别是()和()。
【解答】三元组顺序表,十字链表
17设高度为h的二叉树上只有度为0和度为2的结点,该二叉树的结点数可能达到的最大值是(),最小值是()。
【解答】2h-1,2h-1
【分析】最小结点个数的情况是第1层有1个结点,其他层上都只有2个结点。
18深度为k的二叉树中,所含叶子的个数最多为()。
【解答】2k-1
【分析】在满二叉树中叶子结点的个数达到最多。
19具有100个结点的完全二叉树的叶子结点数为()。
【解答】50
【分析】100个结点的完全二叉树中最后一个结点的编号为100,其双亲即最后一个分支结点的编号为50,也就是说,从编号51开始均为叶子。
20已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点。
则该树中有()个叶子结点。
【解答】12
【分析】根据二叉树性质3的证明过程,有n0=n2+2n3+1(n0、n2、n3分别为叶子结点、度为2的结点和度为3的结点的个数)。
21已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。
【解答】求第j列的所有元素之和
22有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。
【解答】出度
23图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();
图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。
【解答】前序,栈,层序,队列
24对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal算法求最小生成树的时间复杂度为()。
【解答】O(n2),O(elog2e)
【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;
Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。
25顺序查找技术适合于存储结构为()的线性表,而折半查找技术适用于存储结构为()的线性表,并且表中的元素必须是()。
【解答】顺序存储和链接存储,顺序存储,按关键码有序
26设有一个已按各元素值排好序的线性表,长度为125,用折半查找与给定值相等的元素,若查找成功,则至少需要比较()次,至多需比较()次。
【解答】1,7
【分析】在折半查找判定树中,查找成功的情况下,和根结点的比较次数最少,为1次,最多不超过判定树的深度。
27对于数列{25,30,8,5,1,27,24,10,20,21,9,28,7,13,15},假定每个结点的查找概率相同,若用顺序存储结构组织该数列,则查找一个数的平均比较次数为()。
若按二叉排序树组织该数列,则查找一个数的平均比较次数为()。
【解答】8,59/15
【分析】根据数列将二叉排序树画出,将二叉排序树中查找每个结点的比较次数之和除以数列中的元素个数,即为二叉排序树的平均查找长度。
28长度为20的有序表采用折半查找,共有()个元素的查找长度为3。
【解答】4
【分析】在折半查找判定树中,第3层共有4个结点。
29对n个元素进行起泡排序,在()情况下比较的次数最少,其比较次数为()。
在()情况下比较次数最多,其比较次数为()。
【解答】正序,n-1,反序,n(n-1)/2
30对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序,当把第7个记录60插入到有序表时,为寻找插入位置需比较()次。
【解答】3
【分析】当把第7个记录60插入到有序表时,该有序表中有2个记录大于60。
31对一组记录(54,38,96,23,15,72,60,45,83)进行快速排序,在递归调用中使用的栈所能达到的最大深度为()。
32对n个待排序记录序列进行快速排序,所需要的最好时间是(),最坏时间是()。
【解答】O(nlog2n),O(n2)
2、选择
1下述排序方法中,比较次数与待排序记录的初始状态无关的是()。
A插入排序和快速排序B归并排序和快速排序C选择排序和归并排序D插入排序和归并排序
【分析】选择排序在最好、最坏、平均情况下的时间性能均为O(n2),归并排序在最好、最坏、平均情况下的时间性能均为O(nlog2n)。
2下列序列中,()是执行第一趟快速排序的结果。
A[da,ax,eb,de,bb]ff[ha,gc]B[cd,eb,ax,da]ff[ha,gc,bb]
3对初始状态为递增有序的序列进行排序,最省时间的是(),最费时间的是()。
已知待排序序列中每个元素距其最终位置不远,则采用()方法最节省时间。
A堆排序B插入排序C快速排序D直接选择排序
【解答】B,C,B
【分析】待排序序列中每个元素距其最终位置不远意味着该序列基本有序。
4堆的形状是一棵()。
A二叉排序树B满二叉树C完全二叉树D判定树
【分析】从逻辑结构的角度来看,堆实际上是一种完全二叉树的结构。
5静态查找与动态查找的根本区别在于()。
A它们的逻辑结构不一样B施加在其上的操作不同C所包含的数据元素的类型不一样D存储实现不一样
【解答】B
【分析】静态查找不涉及插入和删除操作,而动态查找涉及插入和删除操作。
6设散列表表长m=14,散列函数H(k)=kmod11。
表中已有15、38、61、84四个元素,如果用线性探侧法处理冲突,则元素49的存储地址是()。
A8B3C5D9
【解答】A
【分析】元素15、38、61、84分别存储在4、5、6、7单元,而元素49的散列地址为5,发生冲突,向后探测3个单元,其存储地址为8。
7长度为12的有序表采用顺序存储结构,采用折半查找技术,在等概率情况下,查找成功时的平均查找长度是(),查找失败时的平均查找长度是()。
A37/12B62/13C39/12D49/13
【解答】A,B
【分析】画出长度为12的折半查找判定树,判定树中有12个内结点和13个外结点。
8用n个键值构造一棵二叉排序树,其最低高度为()。
An/2BnClog2nDlog2n+1
【解答】D
【分析】二叉排序树的最低高度与完全二叉树的高度相同。
9n个顶点的强连通图至少有()条边,其形状是()。
AnBn+1Cn-1Dn×
(n-1)E无回路F有回路G环状H树状
【解答】A,G
10含n个顶点的连通图中的任意一条简单路径,其长度不可能超过()。
A1Bn/2Cn-1Dn
【分析】若超过n-1,则路径中必存在重复的顶点。
11对于一个具有n个顶点的无向图,若采用邻接矩阵存储,则该矩阵的大小是()。
AnB(n-1)2Cn-1Dn2【解答】D
12图的生成树(),n个顶点的生成树有()条边。
A唯一B不唯一C唯一性不能确定DnEn+1Fn-1
【解答】C,F
13由权值为{3,8,6,2,5}的叶子结点生成一棵哈夫曼树,其带权路径长度为()。
A24B48C53D72
14用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组A[1]~A[n]中,结点A[i]若有左子树,则左子树的根结点是()。
AA[2i-1]BA[2i+1]CA[i/2]DA[2i]
15对任何一棵二叉树T,如果其终端结点的个数为n0,度为2的结点个数为n2,则()。
An0=n2-1Bn0=n2Cn0=n2+1D没有规律
16一棵满二叉树中共有n个结点,其中有m个叶子结点,深度为h,则()。
An=h+mBh+m=2nCm=h-1Dn=2h-1
17对于完全二叉树中的任一结点,若其右分支下的子孙的最大层次为h,则其左分支下的子孙的最大层次为()。
AhBh+1Ch或h+1D任意
18下面的说法中,不正确的是()
A数组是一种线性结构
B数组是一种定长的线性结构
C除了插入与删除操作外,数组的基本操作还有存取、修改、检索和排序等
D数组的基本操作有存取、修改、检索和排序等,没有插入与删除操
【分析】数组属于广义线性表,数组被创建以后,其维数和每维中的元素个数是确定的,所以,数组通常没有插入和删除操作。
19对特殊矩阵采用压缩存储的目的主要是为了()
A表达变得简单B对矩阵元素的存取变得简单
C去掉矩阵中的多余元素D减少不必要的存储空间
【分析】在特殊矩阵中,有很多值相同的元素并且他们的分布有规律,没有必要为值相同的元素重复存储。
20下面()不属于特殊矩阵。
A对角矩阵B三角矩阵C稀疏矩阵D对称矩阵
21将数组称为随机存取结构是因为()
A数组元素是随机的B对数组任一元素的存取时间是相等的
C随时可以对数组进行访问D数组的存储结构是不定
22若一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是()。
A不确定Bn-iCn-i-1Dn-i+1
【分析】此时,输出序列一定是输入序列的逆序。
23设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是()。
A6B4C3D2
【分析】由于队列具有先进先出性,所以,此题中队列形同虚设,即出栈的顺序也是e2、e4、e3、e6、e5、e1。
24一个栈的入栈序列是1,2,3,4,5,则栈的不可能的输出序列是()。
A54321B45321C43512D12345
【分析】此题有一个技巧:
在输出序列中任意元素后面不能出现比该元素小并且是升序(指的是元素的序号)的两个元素。
25设计一个判别表达式中左右括号是否配对的算法,采用()数据结构最佳
A顺序表B栈C队列D链表
【分析】每个右括号与它前面的最后一个没有匹配的左括号配对,因此具有后进先出性。
26在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印缓冲区,该缓冲区应该是一个()结构。
A栈B队列C数组D线性表
【分析】先进入打印缓冲区的文件先被打印,因此具有先进先出性。
27一个队列的入队顺序是1,2,3,4,则队列的输出顺序是()。
A4321B1234C1432D3241
【分析】队列的入队顺序和出队顺序总是一致的。
28在具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是()。
AO
(1)BO(n)CO(n2)DO(nlog2n)
【分析】首先应顺序查找新结点在单链表中的位置。
29对于n个元素组成的线性表,建立一个有序单链表的时间复杂度是()。
【分析】该算法需要将n个元素依次插入到有序单链表中,而插入每个元素需O(n)。
30使用双链表存储线性表,其优点是可以()。
A提高查找速度B更方便数据的插入和删除
C节约存储空间D很快回收存储空间
【解答】B
【分析】在链表中一般只能进行顺序查找,所以,双链表并不能提高查找速度,因为双链表中有两个指针域,显然不能节约存储空间,对于动态存储分配,回收存储空间的速度是一样的。
由于双链表具有对称性,所以,其插入和删除操作更加方便。
31在一个单链表中,已知q所指结点是p所指结点的直接前驱,若在q和p之间插入s所指结点,则执行()操作。
As->
next=p->
next;
p->
next=s;
Bq->
s->
next=p;
Cp->
next=s->
Dp->
next=q;
【分析】注意此题是在q和p之间插入新结点,所以,不用考虑修改指针的顺序。
32单循环链表的主要优点是()。
A不再需要头指针了
B从表中任一结点出发都能扫描到整个链表;
C已知某个结点的位置后,能够容易找到它的直接前趋;
D在进行插入、删除操作时,能更好地保证链表不断开。
33顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A线性结构B非线性结构C存储位置D指针
【解答】C,D
【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;
链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。
34假设有如下遗产继承规则:
丈夫和妻子可以相互继承遗产;
子女可以继承父亲或母亲的遗产;
子女间不能相互继承。
则表示该遗产继承关系的最合适的数据结构应该是()。
A树B图C线性表D集合
35算法指的是()。
A对特定问题求解步骤的一种描述,是指令的有限序列。
B计算机程序
C解决问题的计算方法
D数据处理
【分析】计算机程序是对算法的具体实现;
简单地说,算法是解决问题的方法;
数据处理是通过算法完成的。
所以,只有A是算法的准确定义。
36下面()不是算法所必须具备的特性。
A有穷性B确切性C高效性D可行性
【分析】高效性是好算法应具备的特性。
37算法分析的目的是(),算法分析的两个主要方面是()。
A找出数据结构的合理性
B研究算法中输入和输出的关系
C分析算法的效率以求改进
D分析算法的易读性和文档性
E空间性能和时间性能
F正确性和简明性
G可读性和文档性H数据复杂性和程序复杂性
【解答】C,E
38设森林中有4棵树,树中结点的个数依次为n1、n2、n3、n4,则把森林转换成二叉树后,其根结点的右子树上有()个结点,根结点的左子树上有()个结点。
An1-1Bn1Cn1+n2+n3Dn2+n3+n4
【解答】D,A
【分析】由森林转换的二叉树中,根结点即为第一棵树的根结点,根结点的左子树是由第一棵树中除了根结点以外其余结点组成的,根结点的右子树是由森林中除第一棵树外其他树转换来的。
39讨论树、森林和二叉树的关系,目的是为了()。
A借助二叉树上的运算方法去实现对树的一些运算
B将树、森林按二叉树的存储方式进行存储并利用二叉树的算法解决树的有关问题
C将树、森林转换成二叉树
D体现一种技巧,没有什么实际意义
40设数组S[n]作为两个栈S1和S2的存储空间,对任何一个栈只有当S[n]全满时才不能进行进栈操作。
为这两个栈分配空间的最佳方案是()。
AS1的栈底位置为0,S2的栈底位置为n-1
BS1的栈底位置为0,S2的栈底位置为n/2
CS1的栈底位置为0,S2的栈底位置为n
DS1的栈底位置为0,S2的栈底位置为1
【分析】两栈共享空间首先两个栈是相向增长的,栈底应该分别指向两个栈中的第一个元素的位置,并注意C++中的数组下标是从0开始的。
三、
1分析以下各程序段,并用大O记号表示其执行时间。
【解答】⑴基本语句是k=k+10*i,共执行了n-2次,所以T(n)=O(n)。
⑵基本语句是k=k+10*i,共执行了n次,所以T(n)=O(n)。
⑶分析条件语句,每循环一次,i+j整体加1,共循环n次,所以T(n)=O(n)。
⑷设循环体共执行T(n)次,每循环一次,循环变量y加1,最终T(n)=y,即:
(T(n)+1)2≤n,所以T(n)=O(n1/2)。
⑸x++是基本语句,所以
2算法设计(要求:
算法用伪代码和C++描述,并分析最坏情况下的时间复杂度)
1)找出整型数组A[n]中元素的最大值和次最大值。
【解答】算法的伪代码描述如下:
算法的C++描述如下:
3已知单链表中各结点的元素值为整型且递增有序,设计算法删除链表中所有大于mink且小于maxk的所有元素,并释放被删结点的存储空间。
【解答】因为是在有序单链表上的操作,所以,要充分利用其有序性。
在单链表中查找第一个大于mink的结点和第一个小于maxk的结点,再将二者间的所有结点删除。
4假设以不带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针。
试设计相应的入队和出队的算法。
【解答】出队操作是在循环链表的头部进行,相当于删除开始结点,而入队操作是在循环链表的尾部进行,相当于在终端结点之后插入一个结点。
由于循环链表不带头结点,需要处理空表的特殊情况。
入队算法如下:
出队算法如
5.一个稀疏矩阵如图4-4所示,写出对应的三元组顺序表和十字链表存储表示。
【解答】对应的三元组顺序表如图4-5所示,十字链表如图4-6所示。
6.已知两个n×
n的对称矩阵按压缩存储方法存储在一维数组A和B中,编写算法计算对称矩阵的乘积。
【解答】对称矩阵采用压缩存储,乘积矩阵也采用压缩存储。
注意矩阵元素的表示方法。
7.已知二叉树的中序和后序序列分别为CBEDAFIGH和CEDBIFHGA,试构造该二叉树。
【解答】二叉树的构造过程如图5-12所示。
8.已知某字符串S中共有8种字符,各种字符分别出现2次、1次、4次、5次、7次、3次、4次和9次,对该字符串用[0,1]进行前缀编码,问该字符串的编码至少有多少位。
【解答】以各字符出现的次数作为叶子结点的权值构造的哈夫曼编码树如图5-14所示。
其带权路径长度=2×
5+1×
5+3×
4+5×
3+9×
2+4×
3+4×
3+7×
2=98,所以,该字符串的编码长度至少为98位。
9设计算法求二叉树的结点个数。
【解答】本算法不是要打印每个结点的值,而是求出结点的个数。
所以可将遍历算法中的“访问”操作改为“计数操作”,将结点的数目累加到一个全局变量中,每个结点累加一次即完成了结点个数的求解。
具体算法如下:
10.设计算法按前序次序打印二叉树中的叶子结点。
【解答】本算法的要求与前序遍历算法既有相同之处,又有不同之处。
相同之处是打印次序均为前序,不同之处是此处不是打印每个结点的值,而是打印出其中的叶子结点,即为有条件打印。
为此,将前序遍历算法中的访问操作改为条件打印即可。
算法如下:
11.已知一个连通图如图6-6所示,试给出图的邻接矩阵和邻接表存储示意图,若从顶点v1出发对该图进行遍历,分别给出一个按深度优先遍历和广度优先遍历的顶点序列。
【解答】邻接矩阵表示如下:
深度优先遍历序列为:
v1v2v3v5v4v6广度优先遍历序列为:
v1v2v4v6v3v5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构