福师1103批次《数据结构概论》复习题.docx
- 文档编号:8220162
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:14
- 大小:23.71KB
福师1103批次《数据结构概论》复习题.docx
《福师1103批次《数据结构概论》复习题.docx》由会员分享,可在线阅读,更多相关《福师1103批次《数据结构概论》复习题.docx(14页珍藏版)》请在冰豆网上搜索。
福师1103批次《数据结构概论》复习题
福师1103批次《数据结构概论》复习题1
一、选择:
(每题2分,共30分)
1、一个栈的输入序列为12345,则下列序列中不可能是栈的输出序列的是()。
A)23415B)54132C)23145D)15432
2、向一个长度为n的向量的第i(1<=i<=n+1)个元素之前插入一个元素时,需要后移()个元素。
A.nB.n-iC.n+1D.n-i+1
3、不带表头的单链表,头指针为head,判断其是否为空的条件是()。
A.head==nilB.head->next==nil
C.head==headD.head->next==head
4、下列排序算法中,其中()是稳定的。
A)堆排序,冒泡排序B)快速排序,堆排序
C)直接选择排序,希尔排序D)归并排序,冒泡排序
5、一个栈的输入序列是a,b,c,d,e,则不可能输出是()。
A.ecdabB.cdebaC.decbaD.abcde
6、一个二叉树中,度为2的结点有6个,则叶子结点为()
A.5B.6C.7D.8
7、深度为6的树,需要多少个()结点才为满二叉树
A.30B.63C.64D.31
8、广义表C=(A,B,(a,b))的长度为()
A.3B.4C.5D.2
9、栈为空的标志为()
A.栈底=栈顶B.栈底-1=栈顶C.栈底=栈顶+1D.栈底=栈顶-1
10、4个结点的平衡二叉树有多少种()
A.3B.4C.5D.2
11、先进先出的是()
A.栈B.队列C.双向队列D.循环链表
12、开放定址法中,增量序列的取法不包括()
A.线性探测再散列B.委随机探测再散列
C.二次探测再散列D.随机探测再散列
13、在最好和最坏情况下的时间复杂度均为O(n*logn)且稳定的排序方法是:
()
A.快速排序B.堆排序C.归并排序D.基数排序
14、设高度为h的二叉树中只有度为0,2的结点,则该二叉树至少有()个结点。
A.2hB.2h-1C.2h+1D.h+1
15、若进栈序列为a,b,c,则通过入出栈操作可能得到的a,b,c的不同排列个数为:
()
A.4B.5C.6D.7
二、填空题:
(每空2分,共20分)
1、树中结点的最大层次称为树的_______。
2、将一棵树转换成一棵二叉树后,二叉树根结点没有_______子树。
3、设二维数组A[0..m-1][0..n-1]按行优先顺序存储在内存中,
每个元素占d个字节,则aij的地址为______________________________。
4、在栈中存取数据的原则是:
____________.
5、在栈结构中,允许插入,删除的一端称为栈顶,另一端称为_________。
6、算法的特点是_________、_________、_________、_________、_________
7、路径长度最长的路径叫做_________
三、解答题:
(每题6分,共30分)
1、在具有n个结点的K(k>=2)叉树的K叉链表表示中,有多少个空指针。
2、已知一棵二叉树的前序序列和中序序列分别为abdghcefi和gdhbaecif,请画出该二叉树。
3、一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,分别写出以第一个记录为基准得到的前三次划分结果。
4、下面程序段的时间复杂度为______________。
(用O估计)
FORi:
=1TOnDO
FORj:
=iTOnDO
s=s+j;
5、下面是一个无向图的邻接矩阵,试将有关数据填入本题的空白处(顶点号由1开始)
01011
10100
01010
10101
10010
该图的顶点数为该图的边数为顶点3的度为。
四、算法题:
(每题10分,共20分,共2小题)
1、中序遍历二叉树算法
2、归并排序算法
福师1103批次《数据结构概论》复习题1参考答案
注:
主观题答案仅供参考
一、选择:
(每题2分,共30分,共15小题)
BDDDACBAABBDCBB
二、填空题:
(每空2分,共20分,共7小题)
1、深度
2、右孩子
3、LOC(a00)+(i*n+j)*d
4、先进先出
5、栈底
6、输入,输出,有穷性,确定性,可行性
7、关键路径
三、解答题:
(每题6分,共30分,共5小题)
1、
解:
n个结点的K叉树共有nk个指针域,已使用的指针域为n-1,所以空指针的个数为:
n+1;
2、
解析:
知识点二叉树的遍历,
根据先序序列,确定a为根-----1
根据中序序列,确定gdhb为二叉树的左结点,根据先序序列确定a为其根-----2
根据先序序列a的下一个节点为b,中序中b之前有gdh可以判断,gdh为B的左子结点
先序中下一个结点是d,中序中d之前是g,所以g是d的左子结点,h为d的右子结点。
----3
至此,a及其左子树判定完毕,运用1-3的步骤判定ecif即可4、
3、
是需要第一次选择的关键字是需要参与划分的。
下面是搜到的具体算法步骤。
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。
一趟快速排序的算法是:
1)设置两个变量I、J,排序开始的时候:
I=0,J=N-1;
2)以第一个数组元素作为关键数据,赋值给X,即X=A[0];
3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于X的值,让该值与X交换(找到就行.找到后i大小不变);
4)从I开始向后搜索,即由前开始向后搜索(I=I+1),找到第一个大于X的值,让该值与X交换(找到就行.找到后j大小不变);
5)重复第3、4步,直到I=J;(3,4步是在程序中没找到时候j=j-1,i=i+1。
找到并交换的时候i,j指针位置不变。
另外当i=j这过程一定正好是i+或j+完成的最后另循环结束)
本题起始为:
46,79,56,38,40,84求解步骤如下:
确定关键字为46
1)46为关键字,从最后84开始比较,找到第一比46小的数,和46交换。
得到
第一次排序结果:
40,79,56,38,46,84
2)46为关键字,从40的下个数79开始比较,找第一比46大的,和46交换,得到
第二次排序结果:
40,46,56,38,79,84
。
。
。
。
4、O(n2)
5、5;6;2
四、算法题:
(每题10分,共20分,共2小题)
1、
Voidmerge(rcdtypesr[],rcdtype&tr[],intI,intm,intn)
{
For(j=m+1,k=I;i<=m&&j<=n;++k)
{
If(la(sq[i].key,sq[j].key))tr[k]=sr[i++];
Elsetr[k]=sr[j++];
}
If(i<=m)tr[k..n]=sr[i..n];
If(j<=n)tr[k..n]=sr[j..n];
}
2、
Midordertraverse(bitreet,status(*visit)(telemtypee)
{
Statusprintelement(telemtypee)
{
Printf(e);
Returnok;
}
If(t)
{
If(Midordertraverse(t->lchild,visit))
If(visit(t->data))
If(Midordertraverse(t->rchild,visit))
Returnok;
Returnerror
}
Elsereturnok;
}
福师1103批次《数据结构概论》复习题2
一、选择:
(每题2分,共30分,共15小题)
1、直接插入排序算法的时间复杂度为()
A.O(N)B。
O
(1)C.O(N2)D.O(LOGN)
2、下列排序方法中,从平均时间而言最佳的是()
A.快速B.希尔C.基数D.归并
3、下列是稳定的排序方法的()
A.快速B.希尔C.堆D.基数
4.所需辅助空间为O(N)的排序方法为()
A.快速B.希尔C.基数D.归并
5、表达式通常用()表示
A.二叉树的先序B.二叉树的中序C.二叉树的后序D.二叉树的层次
6、构造哈希函数的方法不包括()
A.直接定址B.数字分析C.折叠法D.二分查找
7、哈希表中常用的处理冲突的方法不包括()
A.开放定址B.再哈希C.链地址D.折叠
8、二叉排序树的特点不包括()
A.右子树大于根的值B.左子术小于根的值C.左右子树为二叉排序树
D.左子树大于右子树的值
9、三个结点可以构成多少种二叉树()
A.5B.6C.7D.4
10、假设一个栈的进栈顺序为a,b,c,d,则不可能的出栈顺序为()
A.a,b,c,dB.a,d,b,cC.d,c,b,aD.c,b,a,d
11、用邻接表表示图进行深度优先遍历时,通常采用()来实现算法.
A.栈B.队列C.树D.图
12、已知L是带头结点的单链表,p指向表中某结点,则要删除p结点的后继结点应执行操作()。
A.pnext:
=pnextnext;B.pnextnext:
=.next;
C.pnext:
=s;snext:
=pnext;D.snext:
=pnext;pnext:
=s;
13、求关键路径的时间复杂度为()
A.O(N+E)B.O(N+1)C.O(1+E)D.O(N2+1)
14、4个结点的完全连通无向图有几个边()
A.4B.3C.5D.6
15、顺序结构中删除一个元素的平均时间为()
A.1/NB.1/(N+1)C.1D.1/N2
二、填空题:
(每空2分,共20分,共5小题)
1、顺序表相对于链表的优点有_______和_________.
2、某二叉树的前序和后序正好相反,则该二叉树一定是__________二叉树。
3、图的遍历方式有_______和_________.
4、栈的存储方式有_______和_________两种
5、开放定址法中,增量序列的取法有_______、___________和_________三种
三、解答题:
(每题6分,共30分,共5小题)
1、算法的特点
2、简单描述栈的特点
3、49,38,65,97,76,13,27,49,55,4的希尔排序过程
4、描述49,38,27,67,39,87快速排序的过程
5、从时间复杂度,空间复杂度方面简单分析快速排序,基数排序,堆排序,归并排序,简单排序
四、算法题:
(每题10分,共20分,共2小题)
1、2-路归并排序算法
2、先序遍历二叉树算法
福师1103批次《数据结构概论》复习题2参考答案
注:
主观题答案仅供参考
一、选择:
(每题2分,共30分,共15小题)
CADDBDDDABAAADA
二、填空题:
(每空2分,共20分,共5小题)
1、操作简单,便于实现
2、高度等于其结点数
3、深度,广度
4、顺序,链式
5、线性探测再散列,二次探测再散列,伪随机数序列
三、解答题:
(每题6分,共30分,共5小题)
1、1)有穷性2)确定性3)可行性4)输入5)输出
2、先进后出
3、
4938659776132749554
1327495544938659776
1344938274955659776
4132738494955657697
4、
解析:
知识点快速排序,
下面是搜到的具体算法步骤。
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。
一趟快速排序的算法是:
1)设置两个变量I、J,排序开始的时候:
I=0,J=N-1;
2)以第一个数组元素作为关键数据,赋值给X,即X=A[0];
3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于X的值,让该值与X交换(找到就行.找到后i大小不变);
4)从I开始向后搜索,即由前开始向后搜索(I=I+1),找到第一个大于X的值,让该值与X交换(找到就行.找到后j大小不变);
5)重复第3、4步,直到I=J;(3,4步是在程序中没找到时候j=j-1,i=i+1。
找到并交换的时候i,j指针位置不变。
另外当i=j这过程一定正好是i+或j+完成的最后另循环结束)
下面是排序结果:
49386597761327
2738134976976549
13273849657697
5、 平均时间 辅助空间
简单排序O(N2)O
(1)
快速排序O(NLOGN)O(LOGN)
堆排序O(NLOGN)O
(1)
归并排序O(NLOGN)O(N)
基数排序O(D(N+RD))O(RD)
四、算法题:
(每题10分,共20分,共2小题)
1、
Voidmerge(rcdtypesr[],rcdtype&tr[],intI,intm,intn)
{
For(j=m+1,k=I;i<=m&&j<=n;++k)
{
If(la(sq[i].key,sq[j].key))tr[k]=sr[i++];
Elsetr[k]=sr[j++];
}
If(i<=m)tr[k..n]=sr[i..n];
If(j<=n)tr[k..n]=sr[j..n];
}
2
Preordertraverse(bitreet,status(*visit)(telemtypee)
{
Statusprintelement(telemtypee)
{
Printf(e);
Returnok;
}
If(t)
{
If(visit(t->data))
If(preordertraverse(t->lchild,visit))
If(preordertraverse(t->rchild,visit))
Returnok;
Returnerror
}
Elsereturnok;
}
福师1103批次《数据结构概论》复习题3
一、选择:
(每题2分,共30分,共15小题)
1、以下不属于数据结构的是()
A.集合B.线性结构C.树形结构D.环形结构
2、以下不属于算法的特性的是()
A.确定性B.有穷性C.输入D.判断
3、线性表中插入元素的平均效率为()
A.1/(n+1)B.1/nC.O
(1)D.O(N)
4、空栈的判断条件是()
A.top=nB.top=0C.bottom=nD.bottom=0
5、栈的特点是()
A.先进先出B.一同进出C.后进先出D.后进后出
6、空串的长度为()
A.0B.1C.2D.无法判断
7、A=()的长度为()
A.1B.0C.2D.3
8、具有6个顶点的无向图至少要有()条边才能确保是一个连通图。
A.4B.5C.6D.7
9、已知一个顺序存储的线性表,设每个结点需占m个存储单元,若第一个结点的地址为da1,则第i个结点的地址为()
A.da1+(i-1)*mB.da1+i*mC.da1-i*mD.da1+(i+1)*m
10、在n个结点的顺序表中,算法的时间复杂度是O
(1)的操作是:
()
A.访问第i个结点(1<=i<=n)和求第i个结点的直接前趋(2<=i<=n)
B.在第i个结点后插入一个新的结点(1<=i<=n)
C.删除第i个结点(1<=i<=n)
D.将n个结点从小到大排序.
11、C=(a,(b,c))的长度为()
A.1B.2C.3D.0
12、二叉树有()种基本形态
A.1B.2C.5D.4
13、在二叉树的第i层至多有多少个结点()
A.2i-1B.2iC.2i-2D.2i
14、二叉树遍历的方式不包括()
A.先序B.中序C.后序D.层次
15、huffman编码是()编码
A.前缀B.层次C.后缀D.中缀
二、填空题:
(每空2分,共20分,共5小题)
1、在栈结构中,允许插入,删除的一端称为______,另一端称为_________。
2、顺序表相对于链表的优点有_______和_________.
3、二叉树的遍历方式有_______、_________和________
4、图的遍历方式有_______和________
5、_______可以作为算法所需存储空间的度量。
三、解答题:
(每题6分,共30分,共5小题)
6、一个循环顺序队列,队头、尾指针的值分别为front,rear,则队列中元素个数是多少。
(maxlen为循环顺序表的长度)。
7、什么是数据结构?
8、简单叙述Huffman编码原理
9、树转为二叉树的原则
10、画出a+b*(c-d)-e/f所表示的二叉树
四、算法题:
(每题10分,共20分,共2小题)
1、下述两个算法的功能是什么?
ListNode*Demo1(LinkListL,ListNode*p)
{//L是有头结点的单链表
ListNode*q=L->next;
while(q&&q->next!
=p)
q=q->next;
if(q)returnq;
elseError("*pisnotinL");
}
voidDemo2(ListNode*p,ListNode*q)
{//*p,*q是某个链表中的两个结点
DataTypetemp;
temp=p->data;
p->data=q->data;
q->data=temp;
}
2、冒泡排序算法
福师1103批次《数据结构概论》复习题3参考答案
注:
主观题答案仅供参考
一、选择:
(每题2分,共30分,共15小题)
DDABCABCAABCADA
二、填空题:
(每空2分,共20分,共5小题)
1、栈顶、栈底
知识点:
栈
2、操作简单、容易实现
知识点:
顺序表
3、先序、中序、后序
知识点:
遍历二叉树
4、广度、深度
图的遍历
5、空间复杂度
知识点:
空间复杂度
三、解答题:
(每题6分,共30分,共5小题)
1、知识点:
循环队列
(rear- front + maxlen) MOD maxlen
2、知识点:
数据结构
数据结构是一门研究在非数值计算的程序设计问题中,计算机的操作对象及对象间的关系和施加于对象的操作等的学科。
3、知识点:
Huffman编码
哈夫曼是一种编码手段。
也就是说保证将来的编码是最小长度的,最终生成最小的哈夫曼编码树,又称哈夫曼最小树。
它的原理是将一段文本中出现的字符按出现的频率决定其编码。
然后按其最终的编码生成一段明文。
知道了这个原理,编码还是很简单的。
首先,要实现字符的频度表。
也就是说,这18个字符中出现次数最多的一个记作01,然后按其出现的频率,分别生成最小树就可以了!
保
4、知识点:
树与二叉树的转换
将一棵树转换为二叉树的方法是:
⑴树中所有相邻兄弟之间加一条连线。
⑵对树中的每个结点,只保留其与第一个孩子结点之间的连线,删去其与其它孩子结点之间的连线。
⑶以树的根结点为轴心,将整棵树顺时针旋转一定的角度,使之结构层次分明。
5、知识点:
表达式的二叉树标识
四、算法题:
(每题10分,共20分,共2小题)
1、
1)此算法是找个q结点是否存在
2)此算法交换数据
解析:
考核知识点:
单链表的基本操作
2
冒泡排序算法:
voidBubbleSort2(inta[],intn)//相邻两趟向相反方向起泡的冒泡排序算法
{change=1;low=0;high=n-1;//冒泡的上下界
while(low {change=0;//设不发生交换 for(i=low;i if(a[i]>a[i+1]){a[i]<-->a[i+1];change=1;}//有交换,修改标志change high--;//修改上界 for(i=high;i>low;i--)//从下向上起泡 if(a[i]a[i-1];change=1;} low++;//修改下界 }//while }//BubbleSort2 [算法讨论]题目中“向上移”理解为向序列的右端,而“向下移”按向序列的左端来处理。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构概论 福师 1103 批次 数据结构 概论 复习题
![提示](https://static.bdocx.com/images/bang_tan.gif)