数据结构与算法分析习题与参考答案_第1页
数据结构与算法分析习题与参考答案_第2页
数据结构与算法分析习题与参考答案_第3页
数据结构与算法分析习题与参考答案_第4页
数据结构与算法分析习题与参考答案_第5页
已阅读5页,还剩49页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大学

《数据结构与算法分析》课程

习题及参考答案

模拟试卷一

一'单选题(每题2分,共20分)

1.以下数据结构中哪一个是线性结构?()

A.有向图B.队列C.线索二叉树D.B树

2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,

则执行如下()语句序列。

A.p=q;p>next=q;B.p>next=q;q>next=p;

C.p_>next=q_>next;p=q;D.q_>next=p->next;p_>nsxt=q;

3.以下哪一个不是队列的基本运算?()

A.在队列第i个元素之后插入一个元素B.从从头删除一个元素

C.判断一个队列是否为空D.读取队头元素的值

4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成()

个不同的字符串?

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

5.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为()

A.11B.35C.19D.53

以下6-8题基于图1。

$该二叉树结点的前序遍历的序列为

A.EGF'ACDB

B.EAGCF'BD

C.EACBDGF

D.EGA、CDF、B

7.该二叉树结点的中序遍历的序列为

A.A、B、CDEGF

B.E、A、GCF、BD

C.E、A、CB、DGF

E.BDC'、FGE

8.该二叉树的按层遍历的序歹I为

A.E、GF、A、C、DBB.E、A、CB、DGF

C.E、A、GC、F、BDD.E、GA、CDF、B

9.下面关于图的存储的叙述中正确的是()。

A.用邻接表法存储图,占用的存储空间大小只与图中边数有关•而与结点个数无关

B.用邻接表法存储图,占用的存储空间大小与图中辿数和结点人数都有关

C.用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关

D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关

10.设有关键码序列(q,g.mz,a,n,p,x,h),下面哪一个序列是从上述序列出发建堆的结果?()

A.a,g,h,mn,p,q,x,zB.a,g,mh,q,n,p,x,

C.g,m,q,a,n,p,x,h,zD.h,g,mp,a,n,q,x,z

二、填空题(每空1分,共26分)

1.数据的物理结构被分为和四种。

2.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为

在表尾插入元素的时间复杂度为。

3.向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是;

删除一个结点时,需要执行的操作是(假设栈不空而

且无需回收被删除结点)。

4.对于一棵具有n个结点的二叉树,一个结点的编号为i(1<iwn),若它有左孩子则左

孩子结点的编号为,若它有右孩子,则右孩子结点的编号为,若它有

双亲,则双亲结点的编号为。

5.当向一个大根堆插入一个具有最大值的元素时,需要逐层调整,直到被调整

至q_____位置为止。

6.以二分查找方法从长度为10的有序表中查找一个元素时'平均查找长度为。

7.表示图的三种常用的存储结构为、和。

8.对于线性表(70,34、55.23.65,41,20)进行散列存储时,若选用H(K)=K%7

作为散列函数,则散列地址为0的元素有个,散列地址为6的有个。

9.在归并排序中,进行每趟归并的时间复杂度为,整个排序过程的时间复杂度为

,空间复杂度为。

10.在一棵m阶B_树上,每个非

树根结点的关键字数目最少为个,最多为

个,其子树数目最少为,最多为

三、运算题(每题6分,共24分)

1.写出下列中缀表达式的后缀形式:

(1)3X/(Y-2)+1

(2)2+X•(丫+3)

2.试对图2中的二叉树画出其:

(1)顺序存储表示的示意图;

(2)二叉链表存储表示的示意图。

3.判断以下序列是否是小根蛙?如果不是,将它调

整为小根堆。

(1){12,70,33,65,24,56,48,92,86,33}

(2){05,23,20,28,40,38,29,61,35,76,47,100

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

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

E={(1,2)3,(1,3)5,(1,4)8,(2.5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25};

按照普里姆算法从顶点1出发得到最小生成树,试写出在最小生成树中依次得到的各条边。

四、阅读算法(每题7分,共14分)

1.voidAE(Stack&S){

InitStack(S);

Push⑶3);

Push(S,4);

intx=Pop(S)+2*Pop(S);

Push(S,x);

inti,a[5]={1,5,8,12,15};

for(i=0;i<5;i++)Push(S,2*a[i]);while(!StackEmpty(S))cout«Pop(S)«'

}该算法被调用后得到的输出结果为:

2.voidABC(BTNode*BT,int&c1,int&c2){

if(BT!=NULL){

ABC(BT->left,c1,c2);

C1++;

if(BT->left==NULL&&BT->right==NULL)c2++:

ABC(BT->right,c1,c2);

}//if

}

该函数执行的功能是什么?

五、算法填空(共8分)向单链表的末尾添加一个元素的算法。

VoidlnsertRear(LNode*&HL,constElemType&item)

(

LNode*newptr;

newptr=newLNode;

lf()

(

cerr«"Memoryallocationfailare!"«endl;

exit(1);

)

_______________________=item;

newptr->next=NULL;

if(HL==NULL)

HL=;

else{

LNode*P=HL;

While(P->next!=NULL)

p->next=newp:r;

)

)

六、编写算法(共8分)

编写从类型为List的线性表L中将第i个元素删除的算法,(假定不需要对i的值进行

有效性检查,也不用判别L是否为空表。)

voidDelete(List&L,inti)

模拟试卷一参考答案

一、单选题(每题2分,共20分)

1.B2.D3.A4.B5.B6.C7.A8.C9.B10.B

二、填空题(每空1分,共26分)

1•顺序链表索引散列

2.0(n)0(1)

3.p->next=HS;HS=pHS=HS->next

4.2i2i+1i/2(或i/2)

5.向上根

6.2.9

7.邻接矩阵邻接表边集数组

8.14

9.0(n)0(nlogzn)0(n)

10.m/2-1m-1m/2m

三、运算题(每题6分,共24分)

1.(1)3X*Y2-/1+

(2)2X丫3+*+

2.(1)

012345678910n1213141516

123456789

(2)见图3所示:

3.⑴不是小根堆。调整为:{12,65,33,70,24,56,48,92,86,33)

(2)是小根堆。

4.普里姆算法从顶点1出发得到最小生成树为:

(1,2)3,(1,3)5,(1,4)8,(4,6)4,(2,5)10,(4,7)20

四、阅读算法(每题7分,共14分)

1.30241610210

2.该函数的功能是:统计出BT所指向的二叉树的结点总数和叶子总数

五、算法填空(共8分,每一空2分)

newptr==NULLnewptr->=datanewptrp=p->nsxt

六、编写算法(8分)

voidDelete(List&L,inti)

for(intj=i-1;j<L.size-1;j++)

Llist[j]=LlistO+1];//第i个元素的下标为i-1

L.size-;

模拟试卷二

单选题(每题2分,共20分)

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

则执行()。

A.HL=p;p->next=HL;B.o->next=HL->next;HL->next=p;

C.p->next=HL;p=HL;D.p->next=HL;HL=p;

2.若顺序存储的循环队列的QueueMaxSize=n,则该队列最多可存储()个元素.A.nB.n-1

C.n+1D.不确定

3.下述哪一条是顺序存储方式的优点?(A•存储)

密度大B,插入和删除运算方便

C.获取符合某种条件的元素方便D.查找运算速度快

4.设有一个二维数组A[m][n],假设A[0][0]存放位置在600岫,A[3][3]存放位置在

678.10),每个元素占一个空间,问A[2][3]询存放在什么位置?(脚注<必表示用10进制表

示,m>3)

A-658B-648C•633D•653

5.下列关于二叉树遍历的叙述中,正确的是()。

A.若一个树叶是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序遍历最后一个结点

B.若一个点是某二叉树的前序遍历最后一个结点,则它必是该二叉树的中序遍历的最后一个结点

C.若一个结点是某二叉树的中序遍历的最后

一个结点,则它必是该二叉树的前序最后一个结点

D.若一个树叶是某二叉树的前序最后一个结点,

则它必是该二叉树的中序遍历最后一个结点

6.k层二叉树的结点总数最多为().

A-2k-1kk,B.2K+1C.2K-1D.2皿

7.对线性表进行二分法查找,其前提条件是().

A.线性表以方式存储•并且按关键码值排好序

B.线性表以顺序方式存储,并且按关键码值的检索频率排好序

C.线性表以顺序方式存储,并且按关键码值排好序

D.线性表以方式存储,并且按关键码值的检索频率排好序

8.对n个记录进行堆排序,所需要的辅助存储空间为

A.O(1og?n)B.O(n)C.O(1)D.O(n2)

9.对于线性表(7,34,71、25,64,4920,14)进行散列存储时,若选用H(K)

=K%7作为散列函数,则散列地址为。的元素有()个,

A-1B-2C-3D•4

10.下列关于数据结构的叙述中*正确的是().

A.数组是不同类型值的集合

B.递归算法的程序结构比迭代算法的程序结构更为精炼

C.树是一种线性结构

D.用一维数组存储一棵完全二叉树是有效的存储方法

填空题(每空1分,共26分)

1.数据的逻辑结构被分为、_______、和四种。

2.一个算法的时•间复杂度为(3n.34+2000nlog2叶90)/n2,其数量级表示为

3.对于一个长度为n的单链存储的队列,在表头插入元素的时间复杂度为_,在

表尾插入元素的时间复杂度为。

4.假定一棵树的广义表表示为A(D(E,G),H(I,J)),则树中所含的结点数为

个,树的深度为____________,树的度为

5.后缀算式79230+-42/*的值为。中缀算式(3+X*Y)-2Y/3

对应的后缀算式为o

6.在一棵高度为5的理想平衡树中,最少含有_在树中,一络绪燧勺窗姆席吉领为该第痘

7.的为该结点的。点°

在一个具有10个顶点的无向完全图中,包含有

8.有向完全图中,包含有条边。条边,在一个具有n个顶点的

假定一个线性表为(12,17,74,5,63,49,82,36),若按Key%4条件进行划分,使得同一余数的

9元素成为一个子表,则得到的四个子表分别为

、-和对一棵B_树进行删除元素的过程

中,若最终引起树根结点的合并时,会使新树的高度比原树的高度。

10-在堆排序的过程中•旧任一分支结点进行筛运算的时间复杂度为

过程的时间熨杂度为。

11-在线性表的散列存储中,装填因子,整个堆排序

示待散列存储的元素的个数,则

12-运算题(每题6分,共又称为装填系数,若用m表示散列表的长度,n表等

24分)

1.在如下数组A中存储了一个线性表,主、”3-A[0Lnext'试写出该线性表。

A01攵4567

data605U7byu3440

next4052713

2.

1225522613

6454767775

1122\233457

(2)DeleteFront(La);

lnsertRear(La,DeleteFront(La));

TraverseList(La);

(3)ClearList(La);

For(i=0;i<5;i++)

lnsertFront(La,a[i]);

TraverseList(La);

2.现面算法的功能是什么?void

ABC(BTN0de*BT)

(

ifBT{cout«BT->data«'

ABC(BT->left);ABC(BT->right);

)

)

五、算法填空(共8分)二分查找的递归

算法。

IntBinsch(ElemTypeA[],intlowjnthigh,KeyTypeK)

(

if{

intmid=(low+high)/2;

if()returnmid;//查找成功,返回元素的下标

elseif(K<A[mid].key)

returnBinsch(A,low,mid-1,K);//

在左子表上继续查找

elsereturn_____________________________

〃在右子表上继续查找

)

else://

查找失败,返回-1

)

六、编写算法(共8分)

HL为单链表的表头指针,试写出在该单链表中查找具有给定的元素item的算法。

boolFind(LNode*HL,ElemType&item)

模拟试卷二参考答案

一、单选题(每题2分,共20分)

1.B2.B3.A4.C5.D6.A7.C8.C9.D10.D

二、填空题(每空1分,共26分)1.

集合结构线性结构树结构图结构2.0(n)

3.0(1)0(1)

4.722

5.943XY*+2Y*3/-

6.1631

7.孩子(或子)结点双亲(或父)结点

8.45n(n-1)

9.(12,36)(17,5,49)(74,82)(63)

1°•减少1(或减少)

11.O(logzn)O(nlogzn)

12.n/m

运算题(每题6分,共24分)

1.线性表为:(90,40,78,50,34,60)

2.当前序序列为ABKCDFGHIJ中序序列为KBCDAFHIGJ逐步形成二叉树的过程如下图

4所示:

3,y"、AI'才riZAI寸工

(1,6)1,丫心乂/(2,6)3,(3,5)7

4-见图^4)1,(2,5)2,(5,7)2,

图5

四阅读算法(每题7分,共14分)

、(1)La=(26,34,57,79,100)

1•(2)La=(57,79,100,34)

(3)La=(79,34,57,26,100)

2-前序遍历链式存储的二叉树。

五算法填空(每空2分,共8分)

(fow<=high)K==A[mid].keyBinreturn-1

sch(A,mid+1,hight,K)

/\编写算法(8分)

boolFind(LNode*HL,ElemType&tem)

LNode*p=HL;

whilep

if(p->data==item){

returntrue;

6.义表A=(a,(a,b),((a,b),c)),则它的深度为它的长度为

elsep=p->next;

returnfalse;

)

模拟试卷三

单选题(每题2分,共20分)

1.对一个算法的评价,不包括如下()方面的容。

A•健壮性和可读性B.并行性C•正确性D-时空复杂度

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

指向的结点,则执行()

A.p->next=HL->next;HL->next=p;B.p->next=HL;HL=p;

C.p->next=HL;p=HL;D.HL=p;p->next=HL;

3.对线性表,在下列网坏巾情况下应当采用链表表示?()

A.经常需要随机地存取元素B.经常需要进行插入和删除操作

C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变

4.一个栈的输入序列为123,则下列序列中不可能是栈的输出序列的是()

A.231B.321

C.312D.123

5.AOV网是一种()。

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

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

A.低于法处理冲突B,高于法处理冲突

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

7.有需要利用形参直接访问实参应将形参变量说明为()参数°

工.值B.函数C.指针D.引用

8.在稀疏矩阵的带行指针向量的存储中,每个单链表中的结点都具有相同的(

A.行号B•列号C•元素值D•非零元素个数

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

A.O(log2n)B.0(nlog?n)C.0(n)D.0(n)

10.从二叉搜索树中查找一个元素时,其时间复杂度大致为()

2

A.O(n)B.0(1)C.O(log2n)D.O(n)

二'运算题(每题6分,共24分)

1.数据结构是指数据及其相互之间的。当结

点之间存在M对N(M:N)的

联系时,称这种结构为。

2.队列的插入操作是在队列的进行,删除操作是在队列的进仃。

3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件

4.对于一个长度为n的单捱存储的线性表,在表头插入元素的时间复杂度为

在表尾插入元素的时间复杂度为。

5.设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7,列下标j

从0到3,则二维数组W勺数据元素共占用一一个字W中第6行的元素和第

节。W其起始地址为100,

4列的元素共占用一一个字节。若按行顺序存放二维数组

则二维数组元素W[6,3]的起始地址为一

6.广义表A=(a,(a,b),((a,b),c)),则它的深度为它的长度为

7.二叉树是指度为2的树。一棵结点数为N的二叉树,其所有结点

的度的总和是______________-

8.对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个。对一棵曰

算术表达式组成的二叉语法树进行后序遍历得到的结点序列是该算术表达式的

9对于一棵具有n个结点的二叉树,用二叉链表存储时,其指针总数为个,

其中个用于指向孩子,个指针是空闲的。

10-若对一棵完全二叉树从0开始进行结点的编号,并按此编号把它顺序存储到一维数组A中,即

编号为0的结点存储到A⑼中。其余类推,则A[i]元素的左孩子元素为

右孩子元素为,双亲元素为。

11•在线性表的散列存储中,处理冲突的常用方法有和

________________________________两种。

12,当待排序的记录数较大,排序码较随机且对稳定性不作要求时,宜采用

排序:当待排序的记录数较大,存储空间允许且要求排序是稳定时,宜采用

__________________________排序。

运算题(每题6分,共24分)00001

1.已知一个65稀新矩阵如右所示,试:00000

(D写出它的三元组线性表;01000

(2)给出三元组线性表的顺序存储表示。00002

设有一个输入数据的序列是{46,25,78,62,12,80},试50(

画出从空树起,逐个输入各个数据而生成的二叉搜索树。oo・

对于图6所示的有向图若存储它采用邻接表,并且每个顶点邻接表中的

边结点都是按照终点序号从小到大的次序的,试写出:

(1)从顶点①出发进行深度优先搜索所得到的深度优先生成树;

4.(2)从顶点②出发进行广度优先搜索所得到的广度优先生成树;

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

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

图6

E-{<2,1>,<3,2>,<3,6>,<4,3>,<4,55>};

四、

1若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次序

.的,按主教材中介绍的拓朴排序算法进行排序,试给出得到的拓朴排序的序列。

阅读算法(每题7分,共14分)

intPrime(intn)

{inti=1;

intx=(int)sqrt(n);

while(++i<=x)

if(n%i==0)break;

if(i>x)return1;

6.广义表A=(a,(a,b),((a,b),c)),则它的深度为它的长度为

elsereturn0;

)

(1)指出该算法的功能;

(2)该算法的时间复杂度是多少?

2.写出下述算法的功能:voidAJ(adjlistGL,inti,intn)

(

QueueQ;InitQueue(Q);cout«i«'visited[i]=true;Qlnsert(QJ);

while(!QueueEmptyiQ)){

intk=QDelete(Q);edgenode*p=GL[k];while(p!=NULL){

intj=p->adjvex;if(!visited[j]){

cout«j«'visited[j]=true;Qlnsert(Qj);

}p=p->next;

}

)

)

五、算法填空(共8分)如下为二分查找的非递归算法,试将其填写完整。Int

Binsch(ElemTypeA[],intn.KeyTypeK)(

intlow=0;

inthigh=n-1;

while(low<=high)

(

intmid=:

if(K==A[mid].key)returnmid;//查找成功,elseif返回元素的下标

(K<[mid].key)

__________________________________________;〃else在左子表上继续查找

__________________________________________;〃在右子表上继续查找

)

return-1;//查找失败,返回-1

六、编写算法(共8分)

HL是单链表的头指针,试写出删除头结点的算

法。

ElemTypeDeleFront(LNode*&HL)

模拟试卷三参考答案

、单选题(每题2分、,共20分)

1.B2.A3.B4.C5.D6.B7.D8.A9.D10.C

填空题(每空1分、,共26分)

1,联系图(或图结构]

2.尾首

3.top==0

4.0(1)0(n)

5.12844108

6.33

7.有序n-1

8.有序序列后缀表达式(或逆波兰式)655

151

9.2nn-11n+1

321-1

10.2i+12i+2(i-iy245-2

11.开放定址法法515

12.快速归并637

图7

运算题(每题6分、,共24分)

1.(1)((1,5,1),(3,2,),(4,5,-2),(5,1,5),(6,3,7))

(3

(2)三兀组线性表的咂序存储表示如图7示。

2.如图8所示。

图8

3.DFS

BFS

4.拓朴排序为:4365721

四、阅读算法(每题7分,共14分)

1.(1)判断n是否是素数(或质数)

(2)0(«n)

2.功能为:从初始点W出发广度优先搜索由邻接表GL所表示的图。

五、算法填空(8分)

(low+high)/2high=mid-1low=mid+

六、编写算法(8分)1

ElemTypeDeleFront(LNode*&

HL)

if(HL==NULL){

cerr<<"空表"«endl;exit(1);

)

LNode*p=HL;

HL=HL->next;

ElemTypetemp=p->data;

deletep;

returntemp;

)

模拟试卷四

一、单选题(每题2分,共20分)

1.以下数据结构中哪一个是线性结构?0

A.有向图B.栈C.二叉树D.B树

2.若某链表微常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,用()则采

存储方式最节省时间。

A.单链表B.双链表

C.带头结点的双循环链表D.单循环链表

3.以下哪一个不是队列的基本运算?()

A.在队列第i个元素之后抬入一个元素B.从队头删除一个元素

C.判断一个队列是否为空D.读取队头元素的值

4.字符A、B、C、D依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组

成()个不同的字符串?

A.15B.14C.16D.21

5.由权值分别为4,7,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为()。A-11

B.37C.19D.53

以下6-8题基于下面的叙述:若某二叉树结点的中序遍历的序列为A'B'D、E、

C、

F、G,后序遍历的序列为B、DCA、F、GE。

6.则该二义树结点的前序遍历的序列为().

A.E、G、F、A、C、D、BB.E、A、GCF、BD

、AC

C.E'A'C'B'D'G'FD.EGDF、B

7.该二叉树有()个叶子。

A-3B.2C.5D.4

8.该二叉树的按层遍历的序列为()

A'E'F'A'C'D'B.E、A、CBDGF

C.E、飞、C、F、B、DC.E、GA'CDF、B

9.下面的二叉树中,()不是完全二叉树。

10.设有关键码序列(q,g,mz,a),下面哪一个序列是从上述序列出发建的小根堆的结

果?()

A.a»g»mq•7B.a,g,mz,q

C.g*m,q,a»zD.g,m,a,q,

、填空题(每空1分,共26分)

数据结构是指数据及其相互之间的______________。当结点之间存在1对N(1:N)的

L联系时,称这种结构为。

一个广义表中的元素分为一元素和元素两类。

2

;对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为____________,

3.

在表尾插入元素的时间复杂度为。

4,向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是

删除一个结点时,需要执行的操作是(假设栈不空而且

无需回收被删除结点)。

5.栈又称为表,队列又称为表。

6.在稀疏矩阵所对应的三元组线性表中,每个三元组元素按_为主

序、

7.为辅序的次序排列。

若一棵二叉树中只有叶子结点和左、右子树皆非空的结点,设叶结点的个数为K,则左、

8・右子树皆非空的结点个数是一。

以折半(或二分)查找方法从长度为8的有序表中查找一个元素时,平均查找长度为

9.

10'表示图的三种常用的存储结构为、和。

对于线性表(78,4,56,30,65)进行散列存储时,若选用H(K)=K%5作为散列函

1.数,则散列地址为0的元素有个,散列地址为4的有个。

12在归并排序中,进行每趟归并的时间复杂度为,整个排序过程的时间复杂度为

.,空间复杂度为。

13在n个带权叶子结点构造出的所有二叉树中,带权路径长度最小的二叉树称为

—。WPL称为。

三、在索引表中,若一个索引项对应主表的一个记录,贝U此索引为索引,若对

1.应主表的若干条记录,则称此索引为索引。

运算题(每题6分,共24分)

写出下列中缀表达式的后缀形式:

2.(1)3X/(Y-2H)+1

(2)2+X*(Y+3)

假定一棵二叉树广义表表示为a(b(c),d(e,f)),分别写出对它进行先序、中序、

后序、

按层遍历的结果。

先序:

中序:

后序:

按层:

3.已知一个无向图的顶点集为{a,b,c,d,e},其邻接矩阵如下所示

a01001

10010

00011

d01101

e10110

(1)画出该图的图形;

(2)根据邻接矩阵从顶点a出发进行深度优先遍历和广度优先遍历,写出相应的遍历序列。

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

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

E={(0,1)8,(0,2)5,(0,3)2,(1,5)6,(2,3)25,(2,4)13,(3,5)9,(3,6)10,(4,6)4,(5,7)20);

按照普里姆算法从顶点0出发得到最小生成树,试写出在最小生成树中依次得到的各条边。

四'阅读算法(每题7分,共14分)

1.voidAE(Stack&S){

InitStack(S);

Push(S,3);

Push(S,4);

intx=Pop(S)+2*Pop(S);

Push(S,x);

inti,a[5]={2,5,8,22,15);

for(i=0;i<5;i++)Push(S,a[i]);while(!StackEmpty(S))cout«Pop(S)«'

)该算法被调用后得到的输出结果为:

2.intakm(unsignedm,unsignedn){

if(m==0)returnn+1;

elseif(n==0)returnakm(m-1,1);

elsereturnakm(m-1,akm(m,n-1));

}

该函数执行的功能是什么?

五、算法填空(共8分)二叉搜索树的查找一一非递归算法

boolFind(BTreeNode*BST,ElemType&item)

{while(BST(!=NULL){

if(item==){

item=BST->datay/查找成功

returntrue;}

elseif(item<BST->data)

BST=BST->;

elseBST=BST->;

}//while

return-Jt查找失败

六、编写算法(共8分)

用递归的算法编写出对存入在a[n+1]数组中的n个有序元素进行二分(又称折半)查找

(假定可0]单元不用)的程序。

inthalfsearch(SSTabl©*a,KeyTyp©k,intlow,inthigh)

模拟试卷四参考答案

单选题(每题2分,共20分)

1.B2.C3.A4.B5.B6.C7.A8.C9.C10.B

二'填空题(每空1分,共26分)

1.联系树(或树结构)

2.单(子)表

3.O(n)0(1)

4.p->next=HS;HS=pHS=HS->next

5.先进后出先进先出

6.行列

7.k-1

8.2.625

9.邻接矩阵邻接表边集数组

10.21

11.0(n)0(nlog2n)0(n)

12.哈夫曼树带权路径长度

13.稠密稀疏

运算题(每题6分,共24分)

1.(1)3X*Y2H*-/1+

(2)2XY3+*+

2.先序:a,b,c,d,e,f

中序:c,b,a,e,d,f

后序:c,b,e,f,d,a

按层:a,b,d,c,e,f

3.(1)该图的图形如图9示:

(2)深度优先遍历序列为:abdce

广度优先遍历序列为:abedc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论