ok数据结构复习题客观题带答案Word格式.docx
- 文档编号:21305095
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:14
- 大小:34.86KB
ok数据结构复习题客观题带答案Word格式.docx
《ok数据结构复习题客观题带答案Word格式.docx》由会员分享,可在线阅读,更多相关《ok数据结构复习题客观题带答案Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
17.由6棵结点数均为5的树所组成的森林转化的二叉树中,根结点的右子树上一定有结点。
D
(A)30(B)6(C)5(D)25
18.带头结点的循环单链表H为空的判定条件是C。
(A)H->
next==NULL(B)H==NULL(C)H->
next==H(D)H!
=H->
next
19.C排序法是不稳定的排序方法。
(A)冒泡(B)直接插入(C)直接选择(D)归并
20.C排序法在记录按关键字有序的情况下,效率反而退化到最差。
(A)希尔(B)堆(C)快速(D)归并
附加复习题1
(1)链接存储结构中的数据元素之间的逻辑关系是由_______表示的。
A.线性结构B.非线性结构C.存储位置D.指针
【解答】D
(2)算法指的是_______。
A.对特定问题求解的步骤描述,是指令的有限序列
B.计算机程序
C.解决问题的推理方法
D.数据的组织和存储
【解答】A
(3)若线性表最常用操作是在最后一个结点之后插入一个元素和删除最后一个元素,则采用______存储方法最节省操作时间。
A.顺序表B.循环双链表
C.单循环链表D.带尾指针的双链表
(4)对于n个元素组成的线性表,建立一个有序单链表的时间复杂度是______。
A.O
(1)B.O(n)C.
D.O(
)
【解答】C
(5)元素序列l,2,3必须先入栈再出栈,则栈的不可能输出序列是________。
A.321B.213C.312D.123
(6)模式匹配的BF算法中主串和模式的扫描指针分别为i和j,当扫描到的当前字符不相等时,_______。
Ai回溯,j回溯B仅j回溯C仅i回溯Di不回溯,j回溯
(7)关于数组的压缩存储,正确的是
A.减少数组的存储元素B.节省存储空间C.使访问元素更加简洁
D.在元素分布有规律时,只存储重要元素且重复的元素只存一个
【解答】B
(8)对任何一棵二叉树,如果其叶结点个数为n0,度为2的结点个数为n2,则必有n0=n2+1。
当树有n个结点时,则度为1的结点个数n1为。
A.n-n2+1B.n-n0+1C.n-2n2+1D.n-2n0+1
(9)指针p指向线索二叉链表中某结点,它没有右孩子的充要条件是。
A.p->
lchild=NULLB.p->
rtag=0C.p->
rtag=1D.p->
rchild=NULL
(10)6个顶点的生成树有______条边。
A.5B.6C.7D.n-1
(11)对记录键值序列:
57,72,43,36,41,82,利用快速排序方法,以第一个记录为基准得到的一次划分结果为。
A.41,36,43,57,72,82B.41,36,43,72,57,82
C.41,36,43,82,57,72D.82,72,57,41,43,36
(12)对键值:
2,9,3,6,7,10,5,依次扫描建立一棵平衡二叉树,其中可能用到LL、LR、RR、RL型调整操作,该树上有个叶结点。
A.2B.3C.4D.5
(13)设长度为100的分块索引表均匀分成10块,确定块号和在块内查找均采用线性查找,则查找的平均查找长度为。
A.11B.10C.5.5D.log2101-1
(14)在插入一个关键码到一棵m阶B树的一终端结点前,若其关键字个数已等于,则插入后必须将该结点分裂为两个结点。
A.mB.m-1C.m+1D.m/2
(15)对289个按关键字有序的记录文件建立分块索引,为了提高查找效率,每块的大小应设为。
A.15B.17C.16D.18
附加复习题2
(1)顺序存储结构中数据元素之问的逻辑关系是由_______表示的。
(2)下面_______不是算法所必须具备的特性。
A.有穷性B.确定性C.高效性D.可行性
(3)若线性表最常用操作是在第一个元素之后插入一个元素和删除最后一个元素,则采用______存储方法最节省时间。
A.单链表B.带尾指针的单循环链表
C.循环双链表D.带头指针的单循环链表
(4)在具有n个结点有序顺序表中插入一个新结点并使之仍然有序的时间复杂度是____。
(5)设栈S和队列Q的初始状态为空。
元素e1,e2,e3,e4,e5,e6依次通过栈S,每个元素必须先入栈再出栈,出栈后再进入队列Q,若6个元素出队列的顺序是e2,e4,e3,e6,e5,e1,则栈S的容量至少应该是________。
A.6B.4C.3D.2
(6)模式匹配的KMP算法中主串和模式的扫描指针分别为i和j,当扫描到的当前字符不相等时,______。
Ai回溯,j回溯B仅j回溯C仅i回溯Di不回溯,j不回溯
(7)不被视为特殊矩阵。
A.带状矩阵B.上或下三角矩阵C.对称矩阵D.稀疏矩阵
(8)一个高度为k的满二叉树共有n个结点,其中有n0个叶子结点,则有。
A.n=k+n0B.2n=k+n0C.n0=k-1D.n=2n0-1
(9)由2,6,4,3,5,7分别作为叶结点权值构造哈夫曼树,带权路径长度为。
A.58B.68C.48D.74
【解答】B
(10)G是一个非连通无向图,共有18条边,则该图至少有______个顶点。
A.7B.5C.6D.8
【解答】D.n个顶点的无向图中,边数e≤n(n-1)/2,将e=18代入,有n≥7,现已知无向图非连通,则n=8。
(11)设有10000个元素,希望用最快速度挑选出前10个最大的,采用方法最好。
A.快速排序B.堆排序C.直接选择排序D.归并排序
(12)已知8个码值为:
42,26,18,37,64,78,58,44,36,按照依次扫描插入一棵从空开始的二叉排序树的方法建立二叉排序树,查找值为58的结点所需比较次数为。
A.2B.3C.4D.5
(13)采用分块查找时,若线性表中共有225个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在的块时,每块应分别含个结点最佳。
A.12B.10C.15D.25
(14)在一个7阶的B树上,除根外的每个非外结点所含的子树数最少为。
A.3B.3C.4D.5
(15)适合于基于比较关键码的动态查找方法是。
A.顺序查找B.散列查找C.索引顺序查找D.折半查找
二、简答题(每小题3分)
1.在单链表中,为什么要增设一个虚的头结点?
答:
运算方便,使得空表的处理和非空表的处理一致,减少程序的复杂性和避免出现bug的机会。
2.平衡二叉树的作用是什么?
答;
构造形态均匀的二叉树,提高查找效率。
3.在平衡二叉树中,LR表示在何种情况下的一种旋转操作?
答:
结点x插在根结点A的左孩子的右子树上,使结点A的平衡因子变为2,以结点A为根的子树失去了平衡。
4.在顺序查找时为何要设置“哨岗”?
5.线索二叉链表中使用线索的目的是什么?
三、判断题(判断正误,每小题1分)
1.完全二叉树中,若一个结点无左孩子,则它必是叶子。
(√)
2.循环队列中无溢出现象。
(x)
3.同一棵二叉树先序序列和后序序列可以唯一确定该二叉树。
4.当所有结点权值相等时,用这些结点构造二叉排序树的特点是只有右子树。
(x)
5.二叉树是树的特殊情形。
6.栈和队列都是特殊的线性表。
(√)
7.深度为k(k≥1)的二叉树至多有2k-1个结点。
8.散列表的平均查找长度不与表中元素个数n有关,而是与装填因子有关。
9.平衡二叉树的查找与有序表的折半查找的时间性能相同。
(√)
10.哈夫曼树逻辑上是不唯一的,但一般算法只能求出唯一的一棵。
(√)
四、填空题(每空2分)
1.带头结点的单链表中,除头结点外,任一结点的存储位置保存在其前驱结点的指针域中。
2.若含n个结点的无向图构成一个环,则它有n棵生成树。
3.3个结点可构成2棵不同形态的树。
4.算法的主要特性有:
有穷性、确定性、可行性、输入和输出。
5.散列法存储的基本思想是根据散列函数来决定存储地址。
6.可以仅由一个尾指针来唯一确定的链表有单循环链表和双链表。
7.一棵二叉树的先序序列为ABDCEFG,中序序列为DBCAFEG,则其后序序列为DCBFGEA。
8.具有9个叶结点的二叉树,一定有8个度为2的结点。
、
9.快速排序在n个数据呈现为正序或反序,算法效率反而降为O(n2)。
10.若由数据元素:
34,76,45,18,26,54,92,65,依次插入结点的方法生成一棵二叉排序树,则其叶结点是26,65,92。
11.一棵含n个结点的k叉树,可能达到的最大高度为n,最小高度为logk[(n-1)(k-1)+1](取下整)+1
12.算法具有输入、输出、可行性、确定性和有穷性五大特性。
13.一个高度为k的堆中,最多有2k-1个结点,最少有2k-1个结点。
(1)数据的最小单位是______,是构成数据结构中数据元素的最小数据单位。
【解答】数据项
(2)带头结点的循环单链表H为空的判定条件是_______________________________。
【解答】H->
next==H
(3)循环队列的引入是为了克服________。
【解答】假溢出
(4)设有一个10阶的对称矩阵A采用压缩存储,A[0][0]为第一个元素,其存储地址为d,每个元素占3个存储单元,则元素A[3][7]的存储地址为。
【解答】7(7+1)/2+3=31
(5)两个串相等的充分必要条件是____________________________。
【解答】对应字符完全相同
(6)一棵含100个结点的完全二叉树含有个叶结点。
【解答】50
(7)如果一个有向图的全部顶点不可以排成一个拓扑序列,则该图一定存在______。
【解答】环
(8)对于键值序列:
11,23,18,38,40,35,9,28,用筛选法建堆,必须从键值为的结点开始。
【解答】38
(9)基于完全二叉树结构而进行的一种高效的选择排序方法称为。
【解答】堆排序
(10)长度为15的有序表采用二分法查找,共有个元素的查找长度为4。
【解答】8
(11)在散列技术中,处理冲突的两种主要方法是开放定址法和。
【解答】链地址法,或拉链法
(12)在一棵5阶B树中,除根结点和外结点外,每个结点的子树数目最少为。
【解答】3
(1)数据的基本单位是_____,在数据结构中通常作为一个数据单位进行处理。
【解答】数据元素
(2)顺序表的第一个元素的存储地址是50,每个元素的长度为5个单位,则第20个元素的存储地址是______。
【解答】50+20*5=150
(3)栈的最大操作特性是后进先出LIFO,队列的最大操作特性是________。
【解答】先进先出FIFO
(4)二维数组A中行的下标从5到8,列的下标从4到15,按行优先存储,每个元素占5个存储单元,A[5][4]的存储地址是500,则元素A[8][12]的存储地址是。
【解答】500+(((15-4+1)*(8-5)+12-4)*5=615
(5)串是一种特殊的线性表,其特殊性体现在_____________________。
【解答】表中数据元素为字符
(6)某二叉树的先序遍历序列是ABDECFG,中序遍历序列是DBEAFGC,则其后序遍历序列是。
【解答】DEBGFCA
(7)求一个具有n个顶点e条弧的有向图的拓扑序列的算法,其时间复杂度为______。
【解答】O(n+e)
(8)若将关键字序列:
15,19,73,61,82,24,47,建成小根堆,只需把73与交换。
【解答】24
(9)快速排序在n个数据呈现为时,算法效率反而降为O(n2)。
【解答】有序
(10)对8个码值所构成的二叉排序树,查找一个码值的平均比较次数为。
【解答】4.25
(11)给定一个键值序列:
25,43,62,31,48,56,采用散列函数H(k)=kmod7,则元素48的同义词是。
【解答】62
(12)在一棵5阶B树中,除根结点和外结点外,每个结点的子树数目最多为。
【解答】5
五、算法阅读题(每空2分)
试阅读下列各小题中的相应算法,并加以填充。
1.双向冒泡排序是指从右往左从倒数的第1个位置进行两两比较,发现逆序就进行交换,将最小关键字的元素排至排序范围中的第一个位置。
再从左往右从第2个位置开始两两相邻的数据元素按关键字进行比较,发现逆序的两个元素就进行交换,将最大的交换到扫描范围内的最后位置上。
如此继续,下一趟比上一趟排序范围至少减少前后两个元素。
直到最后排好序为止。
structElemType{
KeyTypekey;
DataTypeothers;
};
typedefElemTypeSQLIST[M];
//M为一个较大的常数
voiddbbubble(SQLISTr,n){//n为待排数据元素实际个数,0分量不用
inti=1,j,flag=1;
ElemTypetemp;
while(flag){
flag=0;
for(j=n-i+1;
j>
=i+1;
j--)
if(r[j].key<
r[j-1].key){
flag=1;
temp=r[j];
r[j]=r[j-1];
r[j-1]=temp;
}
for(j=i+1;
j<
n-i;
j++)
if(r[j].key>
r[j+1].key){
r[j]=r[j+1];
r[j+1]=temp;
i++;
}
2.二叉排序树上的插入。
在以root为根的二叉排序树上插入关键字x.要求插入后仍保持为二叉排序树。
structBITNODE{
BITNODE*lchild,*rchild;
BITNODE*insertbitree(BITNODEroot,KeyTypex){
{BITNODE*p;
If(root==NULL)
{root=p;
p->
key=x;
lchild=NULL;
p->
rchild=NULL;
;
Elseif(x<
root->
key)root->
lchild=insertbitree(root->
lchild,x);
Elseroot->
rchild=root->
rchild,x);
//分别递归插入左或右子树
returnroot;
//返回该二叉排序树
3.完成二叉树中任意结点的左、右孩子交换的操作。
用非递归方法实现。
设立一个堆栈stack用于存放还没有交换过的结点。
设top为栈顶指针。
交换算法如下:
(1)把根结点放入栈;
(2)当堆栈不空时,取出栈顶元素,交换它的左、右子树,并把它的左、右孩子入栈。
(3)重复
(2),直到堆栈为空止。
constintM=500;
typedefstructnode*tree;
structnode{intdata;
treelchild,rchild;
};
Exchange(treet)
{treep,temp;
treestack[M];
inttop=0;
stack[top]=t;
//根入栈
while(top>
=0)
{p=stack[top--]//栈顶元素出栈
If(p)
{temp=p->
lchild;
lchild=p->
rchild;
rchild=temp;
stack[++top]=p->
4.下列函数reverse的作用是完成带头结点的单链表逆转的操作。
LINKNODE*reverse(LINKNODE*h){
LINKNODE*ptr,*p;
ptr=h->
next;
h->
next=NULL;
while(ptr){
p=ptr;
ptr=ptr->
next=h->
h->
next=p;
}
returnh;
到此基本没问题,应该能及格
六、计算题
1.对数据:
2,9,3,6,7,10,5,按此进入的次序,建立一棵平衡二叉树。
(4分)
2.对权值:
10,7,3,8,9,2,5分别所对应的符号设计哈夫曼编码。
要求按算法路线先建立唯一的一棵哈夫曼树(而不是从逻辑上求出满足条件的任意一个),然后求出哈夫曼编码(4分)
3.已知一组关键字为:
26,36,41,38,44,15,68,12,6,51,25,22用线性探查法解决冲突,构造散列表。
要求:
装填因子为0.8,选用除留余法H(Key)=Key%p作散列函数,p=13.并分别计算查找成功和不成功下的查找平均长度。
(7分)
4.计算下列模式串的每一位字符的失效函数值。
(6分)
abaabcac
01122312
5.计算下列图的从源点出发到其余各个顶点的最短路径及最短路径长度。
(6分)
最短路径最短路径长度
ABAB10
ACADC50
ADAD30
AEADCE60
七、算法编写题(复习练习)
1.编写在二叉排序树上查找关键字为x的结点的算法。
若找到,则返回其所在结点的指针,若没找到,则将其插入该二叉排序树中。
2.设A和B分别为两个集合,且均由链表顺序表示(设其中元素仅为整数,按值从小到大排列),求A与B的交集。
试写出相应的算法。
3.假设以二叉链表为二叉树的存储结构,且每个结点中增加一个存放其作为根的子树中结点个数的域num,试编写一个算法求每个结点为根的子树上的结点数并存入其num域。
4.编写将两个递增有序表合并为一个递减有序表的算法。
要求用循环单链表加以实现。
(数据结点类型自己加以定义说明)
5.试编写算法,在二叉排序树中查找值为x的结点。
若找不到,则返回空指针。
若找到,则返回该结点的指针,并将其为根的子树中的所有结点中的值按由小到大的次序加以输出(设结点中仅含一个整数)。
6.试写出改进的直接选择排序算法。
7.设有一个整数顺序表,设计算法将其调整为前部为奇数,后部为偶数,且时间复杂度为O(n),空间复杂度为O
(1)。
8.编写算法,求给定关键码在二叉排序树中所在的层数。
9.设计算法判断带头结点的循环双链表中存放至少含两个元素的线性表是否为回文。
10.试编写算法,在二叉排序树中查找键值为k的结点,若找不到,则返回空指针。
若找到,则返回该结点的指针,并将其为根的子树中的所有结点中的值按由小到大的次序加以输出(设结点中仅含一个整数关键码,且可用中序遍历以其作为根指针的二叉树函数Inorder()代替)。
要求以非递归形式编写。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ok 数据结构 复习题 客观 答案