数据结构真题Word文档格式.docx
- 文档编号:18132883
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:15
- 大小:24.38KB
数据结构真题Word文档格式.docx
《数据结构真题Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构真题Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
∙D.散列存储
B.
C.
[考点]链式存储方式[解析]应该采用链式存储结构。
因为采用链式结构存储线性表,插入和删除操作需要从头结点起查找被插入或删除结点的前驱结点,并修改这些结点的指针域,查找过程平均移动指针域为表长的一半;
而采用顺序结构存储线性表,插入和删除操作需要平均移动表中的一半元素。
但移动指针域操作比移动元素操作花费的时间少得多。
3.在头指针为head的循环链表中,判断指针变量P指向尾结点的条件是______
∙A.p->next->next==head
∙B.p->next==head
∙C.p->next->next==NULL
∙D.p->next==NULL
[考点]循环链表的特点[解析]循环链表的特点是单链表中最后一个结点(终端结点)的指针域不为空,而是指向链表的头结点,使整个链表构成一个环;
循环结束的判断条件不再是P或P→next是否为空,而是他们是否等于头指针。
因此答案选B。
4.迪杰斯特拉(Dijkstra)算法的功能是______
∙A.求图中某顶点到其他顶点的最短路径
∙B.求图中所有顶点之间的最短路径
∙C.求图的最小生成树
∙D.求图的拓扑排序序列
A.
[考点]迪杰斯特拉(Dijkstra)算法的功能[解析]Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算从某个源点到其余各定点的最短路径。
主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
因此答案为A。
5.若栈的进栈序列为1,2,3,4,5,则经过出入栈操作不可能获得的出栈序列是______
∙A.4,5,3,2,1
∙B.4,3,5,1,2
∙C.1,2,3,4,5
∙D.5,4,3,2,1
[考点]栈的特点
[解析]栈是限定仅在表尾进行插入或删除操作的线性表,因此,表头对于栈来说具有特殊的意义,称为栈顶。
相应地,表尾称为栈底。
不含任何元素的栈称为空栈。
假设一个栈S中的元素为an,an-1,…,a1,则称a1为栈底元素,an为栈顶元素。
栈中的元素按a1,a2,…,an-1,an的次序进栈。
在任何时候,出栈的元素都是栈顶元素。
换句话说,栈的修改是按后进先出的原则进行的,因此,栈又称为后进先出(LastInFirstOut)表,简称为LIFO表。
A:
1进2进3进4进4出5进5出3出2出1出出栈序列为45321
B:
1进2进3进4进4出3出5进5出2出1出出栈序列为43521
C:
1进1出2进2出3进3出4进4出5进5出出栈序列为12345
D:
1进2进3进4进5进5出4出3出3出1出出栈序列为54321
所以答案选B。
6.A是7×
4的二维数组,按行优先方式顺序存储,元素A[0][0]的存储地址为1000,若每个元素占两个字节,则元素A[3][3]的存储地址为______
∙A.1015
∙B.1016
∙C.1028
∙D.1030
D.
[考点]数组的顺序存储[解析]数组的顺序存储分为行优先存储和列优先存储,数组A[m,n]为m行n列的数组,d为每个元素占的字节数,按行优先顺序存储的二维数组,A[0,0]是基地址:
地址计算公式LOC(ai,j)=LOC(a00)+[i×
n+j]×
d三维数组A[m,n,p]按行优先顺序位于内存中,计算数组元素a[i,j,k]的地址为LOC(aij)=LOC(a000)+[i×
n×
p+j×
p+k]×
d根据公式带入可知D选项正确。
7.深度为4的完全二叉树的结点数至少为______
∙A.4
∙B.8
∙C.13
∙D.15
[考点]完全二叉树[解析]完全二叉树是由满二叉树而引出来的。
对于深度为K的,有N个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称为完全二叉树。
若设二叉树的深度为h,除第h层外,其他各层(1~h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。
要想使深度为4的完全二叉树节点数最少,那么第一、二、三层的结点数都达到最大,分别为21-1,22-1,23-1,第四层的结点最多为24-1,最少为1,那么整个完全二叉树最少结点数为8,因此答案选B。
8.若采用邻接矩阵A存储有向图G,则结点k的入度等于A中______
∙A.结点k对应行元素之和
∙B.结点k对应列元素之和
∙C.结点k对应行和列元素之和
∙D.非零元素之和
[考点]有向图图的邻接矩阵表示法[解析]邻接矩阵是表示图形中顶点之间相邻关系的矩阵,第k列表示终点为顶点k的那些边,非0表示这条边存在,入度表示终点为这点的边数之和,即对应列非零元素之和即为结点k的入度,因此答案选B。
9.无向图G的邻接矩阵一定是______
∙A.对称矩阵
∙B.对角矩阵
∙C.三角矩阵
∙D.单位矩阵
[考点]无向图的邻接矩阵表示法的特点[解析]无向图的邻接矩阵是按主对角线对称的,因此无向图的邻接矩阵一定是对称的,而有向图的邻接矩阵不一定对称,答案选A。
10.下列关于有向带权图G的叙述中,错误的是______
∙A.图G的任何一棵生成树都不含有回路
∙B.图G生成树所含的边数等于顶点数减1
∙C.图G含有回路时无法得到拓扑序列
∙D.图G的最小生成树总是唯一的
[考点]图的生成树[解析]采用不同的遍历方法可以得到不同的生成树,从不同的顶点出发进行遍历也可以得到不同的生成树,所以图的生成树不是唯一的,因此答案D表述错误。
树定义为一个无回路的连通图,因此任何一棵生成树都不含有回路,A正确。
一棵具有n个顶点的生成树有仅有n-1条边,因此生成树所含的边数等于顶点数减1,B正确。
在AOV网中,若不存在回路(环),所有的活动才排成一个线性序列,C正确。
11.在下列排序算法中,关键字比较次数与初始排列次序无关的是______
∙A.冒泡排序
∙B.希尔排序
∙C.直接插入排序
∙D.直接选择排序
[考点]内部排序方法的分析比较[解析]关键字比较次数与记录的初始顺序无关的排序方法是选择排序。
(1)若待排序的一组记录数目n较小(如n≤50)时,可采用插入排序或选择排序。
(2)若n较大时,则应用采用快速排序、堆排序或归并排序。
(3)基待排序记录按关键字基本有序时,则适宜选用直接插入排序或冒泡排序。
(4)当n很大,而且关键字位数较少时,采用链式基数排序较好。
(5)关键字比较次数与记录的初始排列顺序无关的排序方法是选择排序。
12.对下图进行拓扑排序,可以得到的拓扑序列是______
∙A.abcde
∙B.bacde
∙C.bcade
∙D.abdce
[考点]拓扑排序[解析]拓扑排序方法如下:
(1)在从有向图中选择一个没有前驱(即入度为0)的顶点并且输出。
(2)从网中删去该顶点,并且删去从该顶点发出的全部有向边。
(3)重复上述两步,直至全部顶点均已输出,或者当前图中剩余的顶点中没有前趋(入度为0)顶点为止。
(4)输出剩余的无前趋结点。
由于结点a的入度不为0,因此首先排除A,D;
b的入度为0,输出b,删除顶点b和从该点出发的全部有向边,接着找入度为0的结点,此时顶点a的入度为0,而顶点c的入度不为0,因此答案选B。
13.下列线性表中,能使用二分查找的是
∙A.顺序存储(2,12,5,6,9,3,89,34,25)
∙B.链式存储(2,12,5,6,9,3,89,34,25)
∙C.顺序存储(2,3,5,6,9,12,25,34,89)
∙D.链式存储(2,3,5,6,9,12,25,34,89)
[考点]二分法查找的使用条件[解析]二分法查找要求查找对象的线性表必须是顺序存储结构的有序表,因此排除B和D,又因为A选项中不是有序表,因此答案选C。
14.在下列查找方法中,平均查找长度与结点数量无直接关系的是______
∙A.顺序查找
∙B.分块查找
∙C.散列查找
∙D.基于B树的查找
[考点]散列表的查找
[解析]顺序查找成功的平均查找长度为(n+1)/2,折半查找的平均查找长度为log2(n+1)-1,分块查找的平均查找长度为(((n/s)+s)/2)+1,其中s为表分块后每一块的记录个数,可见分块查找不仅与表长n有关,还与每一块中的记录个数s有关,二叉树查找类似于折半查找,哈希表的平均查找长度不是节点个数n的函数,而是装填因子的函数,与节点个数无关,只依赖于哈希表的装填因子,因此选C。
15.下列排序算法中,时间复杂度为O(nlog2n)的算法是______
∙A.快速排序
∙B.冒泡排序
∙C.直接选择排序
∙D.直接插入排序
[考点]内部排序方法的时间复杂度
[解析]排序算法的时间复杂度和空间复杂度如下所列:
[*]
时间复杂度为O(nlog2n)的排序算法有快速、归并、堆排序,因此答案选A。
二、{{B}}填空题{{/B}}(总题数:
10,分数:
20.00)
16.数据的同一种逻辑结构,可以对应多种不同的______。
填空项1:
__________________
(正确答案:
物理结构或存储结构)
[考点]逻辑结构和物理结构的概念[解析]数据逻辑结构描述的是数据元素之间的逻辑关系,数据结构在计算机中的表示(又称映像)称为数据的物理结构,又称存储结构。
数据结构的存储结构是和相应的数据在内存中的物理地址之间的关系有关,而逻辑结构只是描述数据之间的关系,同一种逻辑结构可以用多种物理结构存储,可以采用顺序存储或者链式存储等多种方式。
可见,数据的同一种逻辑结构,可以对应多种不同的存储结构。
17.若在长度为n的顺序表第i个元素之前插入一个元素,则需要向后移动的元素个数是______。
n-i+1)
[考点]顺序表上的基本运算[解析]一般情况下,在第i(1≤i≤n)个元素之前插入一个元素时,需将第n至第i个元素向后移动一个位置,第n至第i个元素一共是n-i+1个元素。
18.顺序栈存放在S[m]中,S[0]为栈底,栈顶指针top初始值为-1,则栈满的条件是top=______。
m-1)
[考点]栈的顺序存储结构[解析]设顺序栈存放在S.data[maxsize]中,栈底位置是maxsize-1,栈空的条件S.top==maxsize,栈满的条件S.top==0;
设顺序栈存放在S.data[maxsize]中,栈底位置是-1,栈空条件是S.top==-1,栈满条件是S.top==maxsize-1,由此可得答案为m-1。
19.队列只能在队尾进行插入操作,在队首进行______操作。
删除)
[考点]队列的定义[解析]队列是一种先进先出(FIFO)的线性表,它只允许在表的一端进行插入,在另一端进行删除;
在队列中,允许插入的一端叫做队尾,允许删除的一端称为对首。
20.广义表A=(x,((y,z),a,b)),则函数head(laead(tail(A)))的值是______。
(y,z))
[考点]广义表的基本运算
[解析]广义表一般记作:
LS=(a1,a2,…,an)其中LS是广义表的名称,n是它的长度,ai可以是单个元素也可是广义表,分别称为原子和子表,当广义表非空时,称第一个元素a1为LS的表头,称其余元素组成的广义表(a2,a3,…,an)为表尾。
21.以权值分别为4,3,2,1的四个叶子结点构成的哈夫曼树,其带权路径长度WPL是______。
19)
[考点]哈夫曼树的带权路径长度[解析]首先1与2结合生出3节点,再选剩下的3与刚生成的3结合生出6节点,剩下的4小于6,所以4,6结合生出10根节点。
对新生成的哈夫曼树进行编码,1的路径000,2的路径001,3的路径01,4的路径为1,因此WPL=1*3+2*3+3*2+4*1=19。
22.图的遍历方法有两种,一种是深度优先遍历,另一种是______。
广度优先遍历)
[考点]图的遍历方法[解析]图的遍历方法一共有两种,分别是深度优先遍历和广度优先遍历。
23.如果排序算法是稳定的,则关键字相同的两个记录排序前后相对次序______。
不变)
[考点]排序算法基本概念[解析]假定在待排序的记录序列中,存在多个具有相同关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定;
否则称其不稳定。
因此如果排序算法是稳定的,那么关键字相同的两个记录排序前后的相对次序是不变的。
24.已知散列表表长m=11,散列函数h(key)=key%11,表中存有三个关键字15,27,39,其余地址为空,若采用线性探查法处理冲突,则关键字为60的结点保存的地址是______。
7)
[考点]处理冲突的方法
[解析]Hi=(H(key)+di)MODm,i=1,2,…,k(k<=m-1),其中H(key)为散列函数,m为散列表长,di为增量序列,可有下列三种取法:
①di=1,2,3,…,m-1,称线性探测再散列;
②di=12,-12,22,-22,32,…,±
k2,(k≤m/2)称二次探测再散列;
③d=伪随机数序列,称伪随机探测再散列;
根据散列函数h(key)=key%11,求得关键字15,27,39的散列值分别为4、5、6,现有关键字60,散列值为5,产生冲突,根据线性探测再散列得到地址6,仍然冲突,再求下一个地址7,7的位置为“空”地址,因此应该填入的地址为7。
25.已知图G的邻接表如下图所示。
从顶点v1出发进行深度优先搜索,得到的深度优先搜索序列是______。
v1、v4、v3、v5、v2)
[考点]图的遍历[解析]深度优先搜索(DFS)类似于树的先根遍历。
深度优先遍历图的方法是从图中某顶点v出发:
(1)访问顶点v;
(2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;
直至图中和v有路径相通的顶点都被访问;
(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历。
三、{{B}}解答题{{/B}}(总题数:
2,分数:
设Q[M]是有M个元素存储空间的循环队列,若front指向队首元素,rear指向队尾元素的下一位置,请分别用C语言描述下列操作。
5.01)
(1).将元素x入队。
1.67)
__________________________________________________________________________________________
正确答案:
(Q→rear=(Q→rear+1)%m)
(2).将队首元素出队,并保存到变量y中。
(y=Q→data[Q→front]Q→front=(Q→front+1)%m)
(3).计算当前队列中元素的个数。
((Q→rear-Q→front+m)%m)
[考点]循环队列
已知带权图G=(VE),其中V=(A,B,C,D,E),邻接矩阵如下所列。
15.00)
(1).画出对应的图G。
3.75)
(对应的带权图G[*])
(2).画出图G的最小生成树。
(克鲁斯卡尔算法生成的最小生成树:
[*])
[考点]最小生成树
(3).已知一组待排记录的关键字序列为(15,11,17,59,14,35,13,17,24,84),请给出对应的小根堆序列。
(11,14,13,17,15,35,17,59,24,84)
[考点]堆排序
(4).已知二叉树如下图所示,请画出该二叉树的前序线索。
(见下图[*])
[考点]二叉树的线索化
四、{{B}}算法阅读题{{/B}}(总题数:
3,分数:
阅读下列函数并回答问题。
typedefstructnode{
DataTypedata;
structnode*next;
}LinkNode;
TypedefLinkNode*Linklist;
voidDeleX(Linklisthead,DataTypex)
{
LinkNode*p,*q,*s;
p=head;
q=p-->next;
while(q!
=NULL)
if(q->data==x){
s=q;
q=q->next;
free(s);
p->next=q;
}
else{
p=q;
}(分数:
5.00)
(1).执行该函数后,单链表head中data值为x的结点数是多少?
2.50)
(0个)
(2).该函数的功能是什么?
(该函数的功能是删除单链表中值为x的节点。
)
[考点]单链表删除操作[解析]在DeleX()函数中通过while循环,依次遍历单链表head,q指向当前比较的节点,p指向当前节点的前一个节点,在判断的过程中,如果当前节点q指向的节点data值等于x则首先将q后移,然后删除该节点(p>next=q);
如果不相等,则将p,q分别后移一个节点。
structnode*lchild,*rchild;
}BinTNode;
typedefBinTNode*BinTree;
voidInorder(BinTreebt)
if(bt!
=NULL){
Inorder(bt->lchild);
printf("
%c"
bt->data);
Inorder(bt->rchild);
9.99)
(1).写出对如下图所示的二叉树执行函数Inorder后得到的输出序列。
3.33)
(CDBFEA)
______________________________________
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构