题库Word格式.docx

上传人:b****5 文档编号:21211732 上传时间:2023-01-28 格式:DOCX 页数:18 大小:67.59KB
下载 相关 举报
题库Word格式.docx_第1页
第1页 / 共18页
题库Word格式.docx_第2页
第2页 / 共18页
题库Word格式.docx_第3页
第3页 / 共18页
题库Word格式.docx_第4页
第4页 / 共18页
题库Word格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

题库Word格式.docx

《题库Word格式.docx》由会员分享,可在线阅读,更多相关《题库Word格式.docx(18页珍藏版)》请在冰豆网上搜索。

题库Word格式.docx

next==NULL

8、已知二维数组A[0..9,0..9]中,元素a[2][0]的地址为560,每个元素占4个字节,则元素a[1][0]的地址为(8)。

A.518B.520C.522D.524

9、在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为(9)。

A.rear%n==frontB.(front+l)%n==rear

C.rear%n-1==frontD.(rear+l)%n==front

10、假设在一棵二叉树中,度为2的结点数为15,度为1的结点数为10个,则该二叉树的分支总数为(10)个。

A.41B.40C.30D.25

二、填空题

1.一棵深度为k的完全二叉树(假定根结点所在的层次为第1层),则其结点总数的最小值为

(1),最大值为

(2)。

2.对于一个具有n个结点的单链表(n≥1),在指针变量p指向的结点后插入一个新结点的时间复杂度为(3),在给定值为x的结点后插入一个新结点的时间复杂度为(4)。

3.设有一空栈,现有输入序列A,B,C,D,E,经过push,push,pop,push,pop,push,push后,此时的输出序列为(5)。

4. 

有一个100*90整型数据的稀疏矩阵,非0元素有10个,设每个整型数据占2字节,则用三元组表示该矩阵时,所需的字节数是(6)。

5.设栈S和队列Q初始为空。

6个元素依a,b,c,d,e,f的顺序通过栈S,一个元素出栈后立即进入队列Q。

若这6个元素出队的序列为d,c,b,f,e,a,则栈S的最小容量需(7)。

6.若对n阶对称矩阵A[0..n-1,0..n-1]以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定aij(i≤j)的位置k的关系为(8)。

7.表达式a+((b*c-d)/e+f*g/h)+x/y对应的后缀表达式是(9)。

8.若INDEX(S,T)表示求T在S中的位置的操作,则对于S="

Beijing&Nanjing"

,T="

jing"

,INDEX(S,T)=(10)。

三、判断题

1.二叉树结构中,任何一个结点都有一个且仅有一个直接前驱和直接后继。

............()

2.在一棵二叉树中,假定每个结点只有左孩子,没有右孩子,对它分别进行中序遍历和后序遍历,则具有相同的结果。

.............()

3.对线性链表来说,从任意结点开始均能扫描表中全部结点。

4.线性表的特点是每个元素都有一个前驱和一个后继。

.............()

5.栈和队列都是限制存取点的线性结构。

四、简答题

1.已知一棵二叉树如下,请分别写出按前序、中序、后序遍历时得到的字符序列。

A

BC

DEF

GHI

J

2.设x,n为整型变量,且n>

0,下面程序片段中语句x/=2执行次数的数量级是多少?

试进行分析。

用“O”记号表示。

x=n*n;

while(x>

=1)

x/=2;

3.用栈实现将中缀表达式:

8*(3+5)+5/3#转换成后缀表达式,画出栈的变化过程图(符号“#”为表达式结束符)。

4.已知一棵二叉树的中序序列和后序序列分别是BDCEAFHG和DECBHGFA,请画出这棵二叉树,并写出对其先序遍历的序列。

5.线性表有两种常用存储结构:

一是顺序表,二是线性链表。

试问:

(1)如果有n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动的改变。

在此情况下,应选用哪种存储结构?

为什么?

(2)若线性表的总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素,那么应采取哪种存储结构?

五、算法题

1.以下算法利用栈的基本操作将一个十进制正整数转换成二进制正整数,填空完善之。

voidconversion()

{

InitStack(S);

scanf("

%d"

&

x);

while(x!

=0)

{

push(S,

(1));

x=x/2;

}

while(!

StackEmpty(S))

{

(2);

printf("

x);

}

}

注:

栈的基本操作如下:

InitStack(s):

初始化一个栈;

Push(s,x):

元素x进栈;

 Pop(s,x):

栈顶元素出栈;

 GetTop(s,x):

读出栈顶元素;

 StackEmpty(s):

判栈是否为空。

2.编写二叉树(以二叉链表存储)先序遍历的递归算法。

复习2

一、单项选择题

1.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行

(1)

A.p->

next=HL->

HL->

B.p->

next=HL;

HL=p;

C.p->

p=HL;

D.HL=p;

p->

2.对线性表,在下列

(2)情况下应当采用链表表示。

A.经常需要随机地存取元素;

B.经常需要进行插入和删除操作;

C.表中元素需要占据一片连续的存储空间;

D.表中元素的个数不变;

3.AOV网是一种(3)。

A.有向图B.无向图C.无向无环图D.有向无环图

4.采用开放定址法处理散列表的冲突时,其平均查找长度(4)。

A.低于链接法处理冲突B.高于链接法处理冲突

C.与链接法处理冲突相同D.高于二分查找

5.快速排序在最坏情况下的时间复杂度为(5)。

A.O(log2n)B.O(nlog2n)C.0(n)D.0(n2)

6.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找到A[3]元素经过比较的数组下标依次为(6)。

A.1,2,3B.9,5,2,3

C.9,5,3D.9,4,2,3

7.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K%9作为散列函数,则散列地址为1的元素有(7)个。

A.1B.2C.3D.4

8.设有6个结点的无向图,该图至少应有(8)条边才能确保是一个连通图。

A.5B.6C.7D.8

9.设一组权值集合W=(15,3,14,2,6,9,16,17),要求根据这些权值集合构造一棵哈夫曼树,则这棵哈夫曼树的带权路径长度为(9)。

A129B219C189D229

10.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有(10)个空指针域。

A2m-1B2mC2m+1D4m

二、填空题

1.设某无向图中顶点数和边数分别为n和e,所有顶点的度数之和为d,则e=

(1)。

2.设一棵二叉树的前序序列为ABC,则有

(2)种不同的二叉树可以得到这种序列。

3.设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较(3)次就可以断定数据元素X是否在查找表中。

4.设有向图G中有向边的集合E={<

1,2>

,<

2,3>

1,4>

4,2>

4,3>

},则该图的一种拓扑序列为(4)。

5.设一组初始记录关键字序列为(20,18,22,16,30,19),则以20为枢轴的一趟快速排序结果为(5)。

6.设关键字序列为(Kl,K2,…,Kn),则用筛选法建初始堆必须从第(6)个元素开始进行筛选。

7.设一组初始记录关键字序列为(49,38,65,97,76,13,27,50),则以d=4为增量的一趟希尔排序结束后的结果为(7)。

8.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X需要执行的语句序列:

s->

(8)。

9.设一组初始记录关键字序列为(20,12,42,31,18,14,28),则根据这些记录关键字构造的二叉排序树的平均查找长度是19/7(9)。

10.采用开放定址法处理散列表的冲突时,其平均查找长度(10)(填高于、等于或低于)链地址法处理冲突。

三、判断题

1.调用一次深度优先遍历可以访问到图中的所有顶点。

()

2.已知一棵二叉树的先序序列和后序序列,则能够唯一确定出该二叉树的形状。

()

3.层次遍历初始堆可以得到一个有序的序列。

()

4.将一棵树T转化成二叉树,则该二叉树中一定没有右子树。

()

5.如果某个有向图的邻接表中第i条单链表为空,则第i个顶点的出度为零。

1.编写一个算法,求出邻接表表示的无向图中序号为No的顶点的度数。

(本题满分6分)

intdegree3(Graph&

G,intNo)

//根据无向图的邻接表求出序号为No的顶点的度数

{intTd=0;

AdjListp=G.AdjList[No];

需要填写的部分

return(Td);

2.下图给出了一个具有15个活动、11个事件的工程的AOE网,求该网的关键路径并画出关键路径。

3.根据两个有序单链表生成一个新的有序单链表,原有单链表保持不变。

要求新生成的链表中不允许有重复元素,并要求返回新表的表头指针。

填写程序中缺少的部分。

ListNode*Merge(ListNode*L1,ListNode*L2){

//根据两个有序单链表L1和L2,生成一个新的有序单链表

ListNode*p1=L1->

link,*p2=L2->

link;

ListNode*first=newListNode;

ListNode*p=first;

while(p1!

=NULL&

&

p2!

=NULL){//当两个链表都未检测完时

=NULL){//继续处理p1链表中剩余的结点。

p=p->

link=newListNode;

data=p1->

data;

p1=p1->

while(p2!

=NULL){//继续处理p2链表中剩余的结点。

data=p2->

p2=p2->

link=NULL;

returnfirst->

4.下图所示为一个有向网图及其带权邻接矩阵,要求对有向图采用Dijkstra算法,求从V0到其余各顶点的最短路径。

5.用栈实现将中缀表达式:

9+6*(3-1)-8/2#转换成后缀表达式,画出栈的变化过程图(符号“#”为表达式结束符)。

6.假定一组记录为(38,42,55,15,23,44,30,74,48,26),按次序插入每个结点生成一棵AVL树,画出该AVL树,并求出该AVL树中度为2、度为1和度为0的结点个数。

7.若数组A[n]={12,24,0,38,0,0,0,0,29,0,45,0},n=12,写出算法执行后数组A[n]元素的值。

voidunknown(intA[12],intn){

intfree=0;

for(inti=0;

i<

n;

i++)

if(A[i]!

=0){

if(i!

=free){

A[free]=A[i];

A[i]=0;

free++;

五、算法阅读、设计题(本大题有3小题,共18分,每小题分值见各题标注)

1.下面是进行快速排序的一次划分的算法,请按标号填补合适的内容。

voidExchange(ints[],inti,intj){

inttemp=s[i];

s[i]=s[j];

___

(1)___;

intPartition(intseq[],intlow,inthigh){

intpivotpos=low,pivot=seq[low],i;

for(i=low+1;

=high;

if(___

(2)___){

pivotpos++;

if(pivotpos!

=i)Exchange(seq,pivotpos,i);

___(3)___;

returnpivotpos;

2.已知一个图的顶点集V和边集G分别为:

V={1,2,3,4,5,6};

E={<

1,2>

<

1,3>

2,4>

2,5>

3,4>

4,5>

4,6>

5,1>

5,3>

6,5>

};

假定该图采用邻接表表示,每个顶点邻接表中的边结点都是按照终点序号(即数值域的值)从大到小的次序链接的,试按照遍历算法写出:

(本题满分6分)

(1)从顶点1出发进行深度优先搜索所得到的顶点序列;

(2)从顶点1出发进行广度优先搜索所得到的顶点序列。

3.设哈希表的长度m=11,哈希函数为H(K)=Kmodm,采用链地址法解决冲突,待依次插入的关键码序列为{1,13,12,34,38,33,27,22}。

根据构成的哈希表回答:

(1)在等概率的情况下,搜索成功时的平均查找长度;

(2)在等概率的情况下,搜索失败时的平均查找长度。

复习3

1.算法分析的两个主要方面是

(1)。

A.空间复杂性和时间复杂性B.正确性和简明性

C.可读性和文档性D.数据复杂性和程序复杂性

2.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是

(2)。

next=s;

B.s->

p->

C.p->

next=s->

D.p->

3.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少(3)。

A.1和5B.2和4C.4和2D.5和1

4.设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是(4)。

A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF

5.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是(5)。

A.1175B.1180C.1205D.1210

6.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有(6)结点。

A.2hB.2h-1C.2h+1D.h+1

7.已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},

E={<

V1,V2>

V1,V3>

V1,V4>

V2,V5>

V3,V5>

V3,V6>

V4,V6>

V5,V7>

V6,V7>

},G的拓扑序列是(7)。

A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7

C.V1,V3,V4,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V7

8.以下说法错误的是(8)。

A.哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。

B.若一个二叉树的树叶是某子树的中序遍历序列中的第一个结点,则它必是该子树的后序遍历序列中的第一个结点。

C.已知二叉树的前序遍历和后序遍历序列并不能惟一地确定这棵树,因为不知道树的根结点是哪一个。

D.在前序遍历二叉树的序列中,任何结点的子树的所有结点都是直接跟在该结点的之后。

9.当采用分块查找时,数据的组织方式为(9)。

A.数据分成若干块,每块内数据有序

B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块

C.数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块

D.数据分成若干块,每块(除最后一块外)中数据个数需相同

10.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是(10)。

A.快速排序B.堆排序C.归并排序D.直接插入排序

1.下面程序段中带下划线的语句的执行次数的数量级是:

i=1;

WHILE(i<

n)i=i*2;

2.二叉树结点的中序序列为A,B,C,D,E,F,G,后序序列为B,D,C,A,F,G,E,则该二叉树结点的前序序列为___,则该二叉树对应的树林包括___棵树。

3.用S表示入栈操作,X表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的S和X的操作串为___。

4.设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分(如下图所示)按行序存放在一维数组B[1,n(n-1)/2]中,对下三角部分中任一元素ai,j(i≤j),在一维数组B中下标k的值是:

5.若a=1,b=2,c=3,d=4,则后缀式db/cc*a-b*+的运算结果为___。

6.一棵完全二叉树上有1001个结点,其中叶子结点的个数是____。

7.有向图G=(V,E),其中V(G)={0,1,2,3,4,5},用<

a,b,d>

三元组表示弧<

a,b>

及弧上的权d.E(G)为{<

0,5,100>

0,2,10>

<

1,2,5>

0,4,30>

4,5,60>

3,5,10>

2,3,50>

4,3,20>

},则从源点0到顶点3的最短路径长度是____,经过的中间顶点是____。

8.对关键码序列28,16,32,12,60,2,5,72快速排序,从小到大一次划分结果为:

三、判断题

1.完全二叉树中,若一个结点没有左孩子,则它必是树叶。

2.用邻接矩阵法存储一个图所需的存储单元数目与图的边数有关。

3.查找相同结点的效率折半查找总比顺序查找高。

4.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。

5.直接选择排序算法在最好情况下的时间复杂度为O(N)。

1.设双向循环链表中结点的数据域、前驱和后继指针域分别为data,pre和next,试写出在指针p所指结点之前插入一s结点的C语言描述语句。

2.画出对算术表达式A-B*C/D-E/F求值时操作数栈和运算符栈的变化过程。

3.给定30个字符组成的电文:

DDDDDAAABEEAAFCDAACABBCCCBAADD

试为字符A、B、C、D、E、F设计哈夫曼(Huffman)编码。

(1)画出相应的哈夫曼树;

(要求左子树结点的值小于右子树结点的值)

(2)分别列出A、B、C、D、E、F的哈夫曼码;

(要求左枝标0,右枝标1)

(3)计算该树的带权路径长度WPL

4.给定关键字序列(46,15,20,35,28,58,18,50,54)依次插入结点分别生成一棵二叉排序树和二叉平衡树,并分别求出查找每个元素的平均查找长度。

(表明插入时所需平衡的类型)

5.一个线性表为B=(12,23,45,57,20,03,78,31,15,36),设散列表为HT[0..12],散列函数为H(key)=key%13并用线性探查法解决冲突,请画出散列表,并计算等概率情况下查找成功的平均查找长度。

6.已知世界六大城市为:

北京(Pe)、纽约(N)、巴黎(Pa)、伦敦(L)、东京(T)、墨西哥(M),下表给定了这六大城市之间的交通里程:

世界六大城市交通里程表(单位:

百公里)

pe

n

pa

L

T

M

Pe

109

82

81

21

124

N

58

55

108

32

PA

3

97

92

95

89

113

(1).画出这六大城市的交通网络图;

(2).画出该图的邻接表表示法;

(3).构造的最小(代价)生成树.(请分别用Prim算法和Kruskal算法)

五、算法阅读、设计题

1.下列程序为二叉搜索树的查找的递归算法,请完善:

boolFind(BTreeNode*BST,E

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1