数据结构与算法复习.docx

上传人:b****6 文档编号:8493544 上传时间:2023-01-31 格式:DOCX 页数:33 大小:87.09KB
下载 相关 举报
数据结构与算法复习.docx_第1页
第1页 / 共33页
数据结构与算法复习.docx_第2页
第2页 / 共33页
数据结构与算法复习.docx_第3页
第3页 / 共33页
数据结构与算法复习.docx_第4页
第4页 / 共33页
数据结构与算法复习.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

数据结构与算法复习.docx

《数据结构与算法复习.docx》由会员分享,可在线阅读,更多相关《数据结构与算法复习.docx(33页珍藏版)》请在冰豆网上搜索。

数据结构与算法复习.docx

数据结构与算法复习

第二部分模拟试卷

模拟试卷一

一、单选题(每题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->next=q;

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

()

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

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

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

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

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

图1

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

以下6-8题基于图1。

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

A.E、G、F、A、C、D、B

B.E、A、G、C、F、B、D

C.E、A、C、B、D、G、F

D.E、G、A、C、D、F、B

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

A.A、B、C、D、E、G、F

B.E、A、G、C、F、B、D

C.E、A、C、B、D、G、F

E.B、D、C、A、F、G、E

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

A.E、G、F、A、C、D、B   B.E、A、C、B、D、G、F

C.E、A、G、C、F、B、D    D.E、G、A、C、D、F、B

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

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

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

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

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

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

()

A.a,g,h,m,n,p,q,x,z B.a,g,m,h,q,n,p,x,z

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

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

1.数据的物理结构被分为顺序,链表,索引,散列,四种。

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

2.向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是________________;删除一个结点时,需要执行的操作是______________________________(假设栈不空而且无需回收被删除结点)。

3.对于一棵具有n个结点的二叉树,一个结点的编号为i(1≤i≤n),若它有左孩子则左孩子结点的编号为________,若它有右孩子,则右孩子结点的编号为________,若它有双亲,则双亲结点的编号为________。

4.当向一个大根堆插入一个具有最大值的元素时,需要逐层_________调整,直到被调整到____________位置为止。

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

6.表示图的三种常用的存储结构为_____________、____________和_______________。

7.对于线性表(70,34,55,23,65,41,20)进行散列存储时,若选用H(K)=K%7作为散列函数,则散列地址为0的元素有________个,散列地址为6的有_______个。

8.在归并排序中,进行每趟归并的时间复杂度为______,整个排序过程的时间复杂度为____________,空间复杂度为___________。

9.在一棵m阶B_树上,每个非树根结点的关键字数目最少为________个,最多为________个,其子树数目最少为________,最多为________。

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

1.

图2

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

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

(2)2+X*(Y+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(S,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<

}

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

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分)

向单链表的末尾添加一个元素的算法。

VoidInsertRear(LNode*&HL,constElemType&item)

{

LNode*newptr;

newptr=newLNode;

If(______________________)

{

cerr<<"Memoryallocationfailare!

"<

exit

(1);

}

________________________=item;

newptr->next=NULL;

if(HL==NULL)

HL=__________________________;

else{

LNode*P=HL;

While(P->next!

=NULL)

____________________;

p->next=newptr;

}

}

六、编写算法(共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分)

2.顺序链表索引散列

3.O(n)O

(1)

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

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

6.

图3

向上根

7.2.9

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

9.14

10.O(n)O(nlog2n)O(n)

11.m/2-1m-1m/2m

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

1.

(1)3X*Y2-/1+

(2)2XY3+*+

2.

(1)

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

1

2

3

4

5

6

7

8

9

(2)见图3所示:

3.

(1)不是小根堆。

调整为:

{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->next

六、编写算法(8分)

voidDelete(List&L,inti)

{

for(intj=i-1;j

L.list[j]=L.list[j+1];//第i个元素的下标为i-1

L.size--;

}

模拟试卷二

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

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

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

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

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

A.n B.n-1

C.n+1D.不确定

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

()

A.存储密度大B.插入和删除运算方便

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

4.设有一个二维数组A[m][n],假设A[0][0]存放位置在600(10),A[3][3]存放位置在678(10),每个元素占一个空间,问A[2][3](10)存放在什么位置?

(脚注(10)表示用10进制表示,m>3)

A.658B.648C.633D.653

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

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

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

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

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

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

A.2k-1B.2K+1C.2K-1   D.2k-1

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

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

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

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

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

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

A.O(1og2n)  B.O(n)  C.O

(1)D.O(n2)

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

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

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

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

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

C.树是一种线性结构

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

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

1.数据的逻辑结构被分为_________、________、__________和___________四种。

2.一个算法的时间复杂度为(3n3+2000nlog2n+90)/n2,其数量级表示为________。

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

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

5.后缀算式79230+-42/*的值为__________。

中缀算式(3+X*Y)-2Y/3对应的后缀算式为_______________________________。

6.在一棵高度为5的理想平衡树中,最少含有_______个结点,最多含有_______个结点。

7.在树中,一个结点的直接后继结点称为该结点的________。

一个结点的直接前趋结点称为该结点的________。

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

9.假定一个线性表为(12,17,74,5,63,49,82,36),若按Key%4条件进行划分,使得同一余数的元素成为一个子表,则得到的四个子表分别为____________________________、___________________、_______________________和__________________________。

10.对一棵B_树进行删除元素的过程中,若最终引起树根结点的合并时,会使新树的高度比原树的高度___________。

11.在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为________,整个堆排序过程的时间复杂度为________。

12.在线性表的散列存储中,装填因子又称为装填系数,若用m表示散列表的长度,n表示待散列存储的元素的个数,则等于________。

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

1.在如下数组A中链接存储了一个线性表,表头指针存放在A[0].next,试写出该线性表。

A01234567

data

60

50

78

90

34

40

next

4

0

5

2

7

1

3

2.已知一棵二叉树的前序遍历的结果是ABKCDFGHIJ,中序遍历的结果是KBCDAFHIGJ,试画出这棵二叉树。

3.已知一个图的顶点集V为:

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

其共有10条边。

该图用如下边集数组存储:

起点

1

2

2

5

5

2

2

6

1

3

终点

6

4

5

4

7

6

7

7

7

5

1

1

2

2

2

3

3

4

5

7

试用克鲁斯卡尔算法依次求出该图的最小生成树中所得到的各条边及权值。

4.画出向小根堆中加入数据4,2,5,8,3,6,10,1时,每加入一个数据后堆的变化。

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

1.在下面的每个程序段中,假定线性表La的类型为List,元素类型ElemType为int,并假定每个程序段是连续执行的。

试写出每个程序段执行后所得到的线性表La。

(1)InitList(La);

Inta[]={100,26,57,34,79};

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

Insert(La,a[i]);

TraverseList(La);

(2)DeleteFront(La);

InsertRear(La,DeleteFront(La));

TraverseList(La);

(3)ClearList(La);

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

InsertFront(La,a[i]);

TraverseList(La);

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

voidABC(BTNode*BT)

{

ifBT{

cout<data<<'';

ABC(BT->left);

ABC(BT->right);

}

}

五、算法填空(共8分)

二分查找的递归算法。

IntBinsch(ElemTypeA[],intlow,inthigh,KeyTypeK)

{

if___________________{

intmid=(low+high)/2;

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

elseif(K

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.O(n)

3.O

(1)O

(1)

4.722

5.943XY*+2Y*3/-

6.1631

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

8.45n(n-1)

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

10.减少1(或减少)

11.O(log2n)O(nlog2n)

12.n/m

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

1.线性表为:

(90,40,78,50,34,60)

2.当前序序列为ABKCDFGHIJ,中序序列为KBCDAFHIGJ时,逐步形成二叉树的过程如下图4所示:

A

A

A

A

F

B

B

F

F

B

G

K

C

G

K

C

HIGJ

CD

K

FHIGJ

H

D

J

HI

J

D

I

KBCD

图4

3.用克鲁斯卡尔算法得到的最小生成树为:

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

4.见图5。

2

2

2

4

4

4

5

5

5

2

4

4

4

2

3

8

8

1

2

2

2

2

5

3

5

5

3

3

5

10

6

4

3

10

4

8

6

4

8

4

8

6

8

图5

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

1.

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

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

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

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

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

(low<=high)K==A[mid].keyBinsch(A,mid+1,hight,K)return-1

六、编写算法(8分)

boolFind(LNode*HL,ElemType&item)

{

LNode*p=HL;

whilep

if(p->data==item){

returntrue;

}

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.若需要利用形参直接访问实参时,应将形参变量说明为()参数。

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

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

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

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

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

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

A.O(n)B.O

(1)C.O(log2n)D.O(n2)

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

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

当结点之间存在M对N(M:

N)的联系时,称这种结构为_____________________。

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

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

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

5.设

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

当前位置:首页 > 解决方案 > 学习计划

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

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