x=2*x;
A.O(log2n)B.O(n)C.O(nlog2n)D.O(n2)
2.元素a,b,c,d,e依次进入初始为空的栈中,若元素进栈后可停留、可
出栈,直到所有元素都出栈,则在所有可能的出栈序列中,以元素d开头的序列
个数是A.3B.4C.5D.6
专业整理知识分享
完美WORD格式
3.已知循环队列存储在一维数组A[0..n-1]中,且队列非空时front和rear
分别指向队头元素和队尾元素。
若初始时队列为空,且要求第1个进入队列的元
素存储在A[0]处,则初始时front和rear的值分别是
A.0,0B.0,n-1C.n-1,0D.n-1,n-1
4.若一棵完全二叉树有768个结点,则该二叉树中叶结点的个数是
A.257B.258C.384D.385
5.若一棵二叉树的前序遍历序列和后序遍历序列分别为1,2,3,4和4,3,
2,1,则该二叉树的中序遍历序列不会是
A.1,2,3,4B.2,3,4,1C.3,2,4,1D.4,3,2,1
6.已知一棵有2011个结点的树,其叶结点个数为116,该树对应的二叉树
中无右孩子的结点个数是
A.115B.116C.1895D.1896
7.对于下列关键字序列,不可能构成某二叉排序树中一条查找路径的序列是
A.95,22,91,24,94,71B.92,20,91,34,88,35
C.21,89,77,29,36,38D.12,25,71,68,33,34
8.下列关于图的叙述中,正确的是
I.回路是简单路径
II.存储稀疏图,用邻接矩阵比邻接表更省空间
III.若有向图中存在拓扑序列,则该图不存在回路
A.仅IIB.仅I、IIC.仅IIID.仅I、III
9.为提高散列(Hash)表的查找效率,可以采取的正确措施是
I.增大装填(载)因子
专业整理知识分享
完美WORD格式
II.设计冲突(碰撞)少的散列函数
III.处理冲突(碰撞)时避免产生聚集(堆积)现象
A.仅IB.仅IIC.仅I、IID.仅II、III
10.为实现快速排序算法,待排序序列宜采用的存储方式是
A.顺序存储B.散列存储C.链式存储D.索引存储
11.已知序列25,13,10,12,9是大根堆,在序列尾部插入新元素18,将
其再调整为大根堆,调整过程中元素之间进行的比较次数是
A.1B.2C.4D.5
41.(8分)已知有6个顶点(顶点编号为0~5)的有向带权图G,其邻接矩阵
A为上三角矩阵,按行为主序(行优先)保存在如下的一维数组中。
要求:
(1)写出图G的邻接矩阵A。
(2)画出有向带权图G。
(3)求图G的关键路径,并计算该关键路径的长度。
42.(15分)一个长度为L(L≥1)的升序序列S,处在第éL/2ù个位置的数称为
S的中位数。
例如,若序列S1=(11,13,15,17,19),则S1的中位数是15。
两个序列的中位数是含它们所有元素的升序序列的中位数。
例如,若S2=(2,4,
6,8,20),则S1和S2的中位数是11。
现有两个等长升序序列A和B,试设计
一个在时间和空间两方面都尽可能高效的算法,找出两个序列A和B的中位数。
要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++或JAVA语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度和空间复杂度。
专业整理知识分享
完美WORD格式
2012
1、求整数n(n≥0)阶乘的算法如下,其时间复杂度是()
intfact(intn)
{if(n<=1)return1;
returnn*fact(n-1);
}
A.O(log2n)B.O(n)C.(nlog2n)D.O(n2)
2、已知操作符包括‘+’、‘-’、‘*’、‘/’、‘(’和‘)’。
将中缀表达式
a+b-a*((c+d)/e-f)+g转换为等价的后缀表达式ab+acd+e/f-**-g+时,用栈来存
放暂时还不能确定运算次序的操作符,若栈初始时为空,则转换过程中同时保存
栈中的操作符的最大个数是()
A.5B.7C.8D.11
3、若一颗二叉树的前序遍历序列为a,e,b,d,c,后续遍历序列为b,c,d,e,a,
则根节点的孩子节点()
A.只有eB.有e、bC.有e、cD.无法确定
4、若平衡二叉树的高度为6,且所有非叶节点的平衡因子均为1,则该平衡
二叉树的节点总数为()
A.10B.20C.32D.33
5、对有n个节点、e条边且使用邻接表存储的有向图进行广度优先遍历,
其算法时间复杂度()
A.O(n)B.O(e)C.O(n+e)D.O(n*e)
6、若用邻接矩阵存储有向图,矩阵中主对角线以下的元素均为零,则关于
专业整理知识分享
完美WORD格式
该图拓扑序列的结构是()
A.存在,且唯一B.存在,且不唯一
C.存在,可能不唯一D.无法确定是否存在
7、如下有向带权图,若采用迪杰斯特拉(Dijkstra)算法求源点a到其他
各顶点的最短路径,得到的第一条最短路径的目标顶点是b,第二条最短路径的
目标顶点是c,后续得到的其余各最短路径的目标顶点依次是()
A.d,e,fB.e,d,fC.f,d,eD.f,e,d
8、下列关于最小生成树的说法中,正确的是()
Ⅰ、最小生成树的代价唯一
Ⅱ、所有权值最小的边一定会出现在所有的最小生成树中
Ⅲ、使用普里姆(Prim)算法从不同顶点开始得到的最小生成树一定相同
Ⅳ、使用普里姆算法和克鲁斯卡尔(Kruskal)算法得到的最小生成树总不
相同
A.仅ⅠB.仅ⅡC.仅Ⅰ、ⅢD.仅Ⅱ、Ⅳ
9、已知一棵3阶B-树,如下图所示。
删除关键字78得到一棵新B-树,其
最右叶结点中的关键字是()
专业整理知识分享
完美WORD格式
A.60B.60,62C.62,65D.65
10、在内部排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为
一趟排序。
下列排序方法中,每一趟排序结束都至少能够确定一个元素最终位置
的方法是()
Ⅰ.简单选择排序Ⅱ.希尔排序Ⅲ.快速排序
Ⅳ.堆排序Ⅴ.二路归并排序
A.仅Ⅰ、Ⅲ、ⅣB.仅Ⅰ、Ⅲ、Ⅴ
C.仅Ⅱ、Ⅲ、ⅣD.仅Ⅲ、Ⅳ、Ⅴ
11.对一待排序序列分别进行折半插入排序和直接插入排序,两者之间可能
的不同之处是()
A.排序的总趟数B.元素的移动次数
C.使用辅助空间的数量D.元素之间的比较次数
二、问答题。
41、(10分)设有6个有序表A、B、C、D、E、F,分别含有10、35、40、
50、60和200个数据元素,各表中元素按升序排列。
要求通过5次两两合并,
将6个表最终合并成1个升序表,并在最坏情况下比较的总次数达到最小。
请回
答下列问题。
(1)给出完整的合并过程,并求出最坏情况下比较的总次数。
(2)根据你的合并过程,描述N(N≥2)个不等长升序表的合并策略,并说
专业整理知识分享
完美WORD格式
明理由。
42、(13分)假定采用带头结点的单链表保存单词,当两个单词有相同的后
时缀,则可共享相同的后缀存储空间,例如,“loaging”和“being”,如下图所
示。
设str1和str2分别指向两个单词所在单链表的头结点,链表结点结构为
(data,next),请设计一个时间上尽可能高效的算法,找出由str1和str2所指
向两个链表共同后缀的起始位置(如图中字符i所在结点的位置p)。
要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++或java语言描述算法关键之处给出注释。
(3)说明你所设计算法的时复杂度。
2013
1.已知两个长度分别为m和n的升序链表,若将它们合并为一个长度为
m+n的降序链表,则最坏情况下的时间复杂度是
A.O(n)B.O(m*n)C.O(min(m,n))D.O(max(m,n))
2.一个栈的入栈序列为1,2,3,,n,其出栈序列是p1,p2,p3,pn。
若
p2=3,则p3可能取值的个数是:
A.n-3B.n-2C.n-1D.无法确定
3.若将关键字1,2,3,4,5,6,7依次插入到初始为空的平衡二叉树T中,
则T中平衡因子为0的分支结点的个数是
专业整理知识分享
完美WORD格式
A.0B.1C.2D.3
4.已知三叉树T中6个叶结点的权分别是2,3,4,5,6,7,T的带权
(外部)路径长度最小是
A.27B.46C.54D.56
5.若X是后序线索二叉树中的叶结点,且X存在左兄弟结点Y,则X的右
线索指向的是
A.X的父结点B.以Y为根的子树的最左下结点
C.X的左兄弟结点YD.以Y为根的子树的最右下结点
6.在任意一棵非空二叉排序树T1中,删除某结点v之后形成二叉排序树
T2,再将v插入T2形成二叉排序树T3。
下列关于T1与T3的叙述中,正确的
是
I.若v是T1的叶结点,则T1与T3不同
II.若v是T1的叶结点,则T1与T3相同
III.若v不是T1的叶结点,则T1与T3不同
IV.若v不是T1的叶结点,则T1与T3相同
A.仅I、IIIB.仅I、IVC.仅II、IIID.仅II、IV
7.设图的邻接矩阵A如下所示。
各顶点的度依次是
A.1,2,1,2B.2,2,1,1C.3,4,2,3D.4,4,2,2
8.若对如下无向图进行遍历,则下列选项中,不是广度优先遍历序列的是
专业整理知识分享
完美WORD格式
A.h,c,a,b,d,e,g,fB.e,a,f,g,b,h,c,d
C.d,b,c,a,h,e,f,gD.a,b,c,d,h,e,f,g
9、下列的AOE网表示一项包含8个活动的工程。
通过同时加快若干活动的
进度可以缩短整个工程的工期。
下列选项中,加快其进度就可以缩短整个工程的
工期的是:
Ac和eBd和eCf和dDf和h
10、在一棵高为2的5阶B树中,所含关键字的个数最少是
A5B7C8D14
A=(0,5,5,3,5,7,5,5),侧5为主元素;又如A=(0,5,5,3,5,
1,5,7),则A中没有主元素。
假设A中的n个元素保存在一个一维数组中,
专业整理知识分享
完美WORD格式
请计一个尽可能高效的算法,找出A的主元素。
若存在主元素,则输出该元素;
否则输出-1。
要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++或Java语言描述算法,关键之处给出释。
(3)说明你所设计算法的时间复杂度和空间复杂度。
42.(10分)设包含4个数据元素的集合S={"do","for","repeat","while"},
各元素查找概率依次为:
p1=0.35,p2=0.15,p3=0.15,p4=0.35。
将S保存在
一个长度为4的顺序表中,采用折半查找法,查找成功时的平均查找长度为2.2。
请回
答:
(1)若采用顺序存储结构保存S,且要求平均查找长度更短,则元素应如何排
列?
应使用何种查找方法?
查找成功时的平均查找长度是多少?
(2)若采用链式存储结构保存S,且要求平均查找长度更短,则元素应如何排
列?
应使用何种查找方法?
查找成功时的平均查找长度是多少?
2014
1.下列程常段的时间复杂度是
count=0;
for(k=1;k<=n;k
*=2)
for(j=1;j<=n;j+1)
count++;
A.O(log2n)B.O(n)C.O(nlog2n)D.O(n
2)
2.假设栈初始为空,将中缀表达式abcdefg转换为等价
专业整理知识分享
完美WORD格式
后缀表达式的过程中,当扫描到f时,栈中的元素依次是
A.B.C.D.
3.循环两列放在一维数组A[0⋯M-1]中,end1指向队头元素,end2指向队
尾元素的后一个位置。
假设队列两端均可进行入队和出队操作,队列中最多能容
纳M-1个元素。
初始时为空,下列判断队空和队满的条件中,正确的是
A.队空:
end1==end2;队满:
end1==(end2+1)modM
B.队空:
end1==end2;队满:
end2==(end1+1)mod(M-1)
C.队空:
end2==(end1+1)modM;队满:
end1==(end2+1)modM
D.队空:
end1==(end2+1)modM;队满:
end2==(end1+1)mod(M-1)
4.若对如下的二叉树进行中序线索化,则结点x的左、右线索指向的结点
分别是
A.e,cB.e,aC.d,cD.b,a
a
b
c
dx
e
5.将森林F转换为对应的二叉树T,F中叶结点的个数等于
A.T中叶结点的个数B.T中度为1的结点个数
C.T中左孩子指针为空的结点个数D.T中右孩子指针为空的结点个数
6.5个字符有如下4种编码方案,不是前缀编码的是
专业整理知识分享
完美WORD格式
A.01,0000,0001,001,1B.011,000,001,010,1
C.000,001,010,011,100D.000,001,010,011,100
7.对如下所示的有向图进行拓扑排序,得到的拓扑序列可能是
A.3,1,2,4,5,6B.3,1,2,4,6,5C.3,1,4,2,5,6
D.3,1,4,2,6,5
12
4
5
3
6
8.用哈希(散列)方法处理冲突(碰撞)时可能出现堆积(聚集)现象,
下列选项中,会受堆积现象直接影响的是
A.存储效率B.数列函数
C.装填(装载)因子D.平均查找长度
9.在一棵具有15个关键字的4阶B树中,含关键字的结点数最多是
A.5B.6C.10D.15
10.用希尔排序方法对一个数据序列进行排序时,若第1趟排序结果为
9,1,4,13,7,8,20,23,15