带答案的数据结构补充习题DOC.docx

上传人:b****5 文档编号:11616428 上传时间:2023-03-28 格式:DOCX 页数:17 大小:130.76KB
下载 相关 举报
带答案的数据结构补充习题DOC.docx_第1页
第1页 / 共17页
带答案的数据结构补充习题DOC.docx_第2页
第2页 / 共17页
带答案的数据结构补充习题DOC.docx_第3页
第3页 / 共17页
带答案的数据结构补充习题DOC.docx_第4页
第4页 / 共17页
带答案的数据结构补充习题DOC.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

带答案的数据结构补充习题DOC.docx

《带答案的数据结构补充习题DOC.docx》由会员分享,可在线阅读,更多相关《带答案的数据结构补充习题DOC.docx(17页珍藏版)》请在冰豆网上搜索。

带答案的数据结构补充习题DOC.docx

带答案的数据结构补充习题DOC

补充习题

第一章——第五章

一、单选或填空题

1.下列程序段中S语句的执行频度为n(n-1)/2。

for(i=0;i<n;i++)

for(j=0;j<i;j++)

S;

2.下列算法的时间复杂度是(O(n))。

for(i=0;i<n;i++)

c[i]=i;

3.算法的时间复杂度可表示为常数阶O

(1)、线性阶O(n)、平方阶O(n2)、对数阶O(logn)和指数阶O(2n)等。

4以下关于数据结构的基本概念中,叙述正确的是C

A)数据元素是数据不可分割的最小单位。

B)数据是数据对象的子集。

C)数据元素之间的关系在计算机中可用顺序映像和非顺序映像两种不同的方法表示。

D)数据结构在计算机中的表示又称为逻辑结构。

5.在数据结构中,数据的逻辑结构包括(A)。

A)线性结构和非线性结构B)逻辑结构和物理结构

C)顺序结构和链式结构D)虚拟结构和抽象结构

6.在数据结构中,数据的存储结构包括C。

§A)线性结构和非线性结构B)逻辑结构和物理结构

C)顺序结构和链式结构D)虚拟结构和抽象结构

7.线性结构的数据元素之间存在一种(D)。

A.一对多关系B.多对多关系

C.多对一关系D.一对一关系

8.在长度为n的顺序表中插入一个元素,需要平均移动A个元素。

A)n/2B)n

C)n(n-1)D)n(n+1)

9.在有n个元素的顺序表中做插入、删除运算,平均时间复杂度为O(n)。

10.顺序表中逻辑上相邻的元素物理位置B相邻,单链表中逻辑上相邻的元素的物理位置相邻。

A)必然、必然B)必然、不一定

C)不一定、必然D)不一定、不一定

11.相对于顺序存储而言,链式存储的优点是(C)。

A.随机存取B.节约空间

C.增、删操作方便D.节点间关系简单

12以下关于头结点的描述中,叙述错误的是A

A)头结点是对链表首元结点的别称

B)若链表中附设头结点,则头指针一定不为空

C)头结点中不存储链表的数据元素,而是一些诸如表长之类的辅助信息

D)在单链表中附设头结点,插入或删除首元素时不必进行特殊处理

13.已知L是无表头结点的单链表,且P所指结点既不是首元结点,也不是尾元结点,则在P之后插入S所指结点,则执行(A)。

A)S->next=P->next;P->next=S;

B)P->next=S->next;S->next=P;

C)S->next=P;P->next=S;

D)P->next=S;S->next=P;

14.已知L是带表头结点的非空单链表,且P结点是S结点的直接前驱。

则删除S结点的语句序列为B。

I.P->next=S;free(P)

II.P->next=P->next->next;free(S)

III.P->next=S->next;free(S)

IV.P=P->next;free(S)

A)I和II正确B)II和III正确

C)III和IV正确D)全部正确

15.已知L是带表头结点的单链表,则删除首元结点的语句序列是(C)。

A)L->next=L->next->next;free(L)

B)P=L;L=P->next;free(P)

C)P=L->next;L->next=P->next;free(P)

D)P=L;L=P->next;free(P)

16.已知L是一带有头结点的单链表的头指针,则该单链表为空的条件是L->next==NULL。

17.已知P结点是某双向链表的中间结点,则删除P结点的语句序列是P->prior->next=p->next,P->next->prior=P->prior,free(P);

18.设将整数1,2,3,4,5依次进栈,最后都出栈,出栈可以在任何时刻(只要栈不空)进行,则出栈序列不可能的是(B)。

A)32415B)45231C)32145D)45321

19.在栈中由顶向下已存放元素c,b,a在第4个元素d入栈前,栈中元素可以出栈,则不可能的出栈序列是(D)

A)dcbaB)cbdaC)cdbaD)cadb

21.设有栈S和队列Q,其初始状态为空,元素a1,a2,a3,a4,a5,a6依次入栈,出栈的元素进入队列Q。

若元素出队列的顺序是a2,a4,a3,a6,a5,a1,则栈的容量至少是3。

22.某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作,则abcde顺序入队,不可能的到的顺序是(C)。

A.bacdeB.dbaceC.dbcaeD.ecbad

23.设用一维数组A[n]存储一个栈,令A[n]为栈底,用整型变量T指示当前栈顶位置,A[T]为栈顶元素。

当从栈中弹出一个元素时,变量T的变化为(A)。

A)T=T+1B)T=T-1

C)T不变D)T=n-1

24.循环队列是满队列的条件是B。

A)Q.rear=Q.frontB)(Q.rear+1)%maxsize=Q.front

C)Q.rear=0D)Q.front=0

25.在具有m个单元的顺序存储的循环队列中,假定front和rear分别为队首指针和队尾指针,则判断队满的条件是(A)

A.front==(rear+1)%mB.front+1==rear

C.front==rearD.rear==m

26.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队首指针和队尾指针,则判断队空的条件是(C)

A)front==(rear+1)%nB)front+1==rear

C)front==rearD)front==0

27.循环队列用数组A[0‥m-1]存放其数据元素。

设front指向其实际的队头,rear指向其实际队尾的下一个位置,则当前队列中的数据元素有(rear-front+m)%m个。

28在串的运算中,StrLength(Concat(’aa’,’bb’))的返回值为D

A)0

B)8

C)6

D)4

29.设s1=”Ihave_”,s2=”adream”,则strcat(s1,s2)的值是Ihave_adream,SubString(s1,4,3)的值是ave。

30.设s1=”Iamastudent”,s2=”astudent”,则Index(s1,s2)的值是6。

31.假设有二维数组A5×6,每个元素用相邻的4个字节存储,存储器按字节编址。

已知A的基地址为1000,则数组A的最后一个元素a45的第一个字节的地址是1116;按行存储时,元素a14的第一个字节的地址是1040。

32.已知二维数组A[1..7,1..7]按列存放,其起始存储位置为100,每个元素占用4个字节,则元素A[4,6]的第一个字节的地址为B。

A)204B)252C)208D)256

33.一个非空广义表的表头(D)。

A.一定是子表B.一定是原子

C.不能是子表D.可以是原子,也可以是子表

34.设广义表L=((a,b),c,()),则head(L)=(a,b),tail(L)=(c,())。

二、算法题

1.写出下列程序段的功能。

StatusA(LinkedListL){//L是无表头结点的单链表

If(L&&L->next){

Q=L;L=L->next;P=L;

While(P->next)P=P->next;

P->next=Q;Q->next=NULL;}

ReturnOK;}

2.写出下列程序段的输出结果。

voidmain(){

StackS;

charx,y;

InitStack(S);

x=’i’;y=’s’;

Push(S,x);Push(S,’r’);Push(S,y);

Pop(S,x);Push(S,’h’);Push(S,x);

Pop(S,x);Push(S,’c’);

while(!

StackEmpty(S)){Pop(S,y);printf(y);}

printf(x);

}

3.写出下列程序段的输出结果。

voidmain(){

QueueQ;InitQueue(Q);

charx=’e’,y=’c’;

EnQueue(Q,‘a’);EnQueue(Q,‘d’);EnQueue(Q,y);

DeQueue(Q,x);EnQueue(Q,x);

DeQueue(Q,x);EnQueue(Q,‘r’);

while(!

QueueEmpty(Q)){DeQueue(Q,y);printf(y);}

printf(x);

}

4.已知L是带头结点的单链表。

试写一算法求该单链表的长度。

5.已知L是带头结点的单链表。

试写一算法在该链表上查找值为x的元素。

6.将带头结点的L中的第i个数据元素删除。

7.在带头结点的L中第i个元素之前插入数据元素e。

8.正位序输入n个元素的值,建立带头结点的单链表L。

9.已知线性表中的元素以值递增有序排列,并以带有头结点的单链表作存储结构。

试写一算法删除表中所有值大于mink且小于maxk的元素,同时释放被删除的结点空间。

10.LA和LB是两个数据元素按升序排列的单链表,将LA和LB合并为有序单链表LC。

写出这两个有序链表合并的算法。

第六章

一、单选或填空题

1.已知完全二叉树的第7层上有10个叶子结点,则整个二叉树的结点数最多是C

A)73B)63C)235D)245

2.300个结点的完全二叉树的叶结点有150个。

3.一个具有1025个结点的二叉树的高h为_C_。

A)11B)10C)11至1025之间D)10至1024之间

4.m叉树的第i层至多有mi-1个结点

5.将一棵有100个节点的完全二叉树从上到下,从左到右依次对节点进行编号,根节点的编号为1,则编号为49的节点的右孩子编号为(A)。

F

A.99B.98C.50D.48

6.把如右图所示的树转换成二叉树时,C是(D)

A.A的左子女B.A的右子女

C.B的左子女D.B的右子女

7.设森林F中有3棵树,其结点个数分别是n1、n2和n3,则与森林对应的二叉树根结点的右子树上的结点个数是D。

A)n1-1B)n1+n2C)0D)n2+n3

8.在一颗度为4的树T中,若有20个度为4的结点,10个度为3的结点,5个度为2的结点,10个度为1的结点,则树T的叶结点个数有86个。

9.一棵二叉树中序遍历结果为DCBAEFG,后序遍历结果为DCBGFEA。

则此二叉树先序遍历的结果应为A

A)ABCDEFGB)ABECFDGC)AEBFCGDD)不能确定

10.将一棵树t转换为孩子—兄弟链表表示的二叉树h,则t的后根遍历是h的B

A)先序遍历B)中序遍历C)后序遍历C)层序遍历

11.现有一段电文共100个字符,其中A出现50次,B出现20次,C出现5次,D出现10次,E出现15次。

现对这5个字符进行哈夫曼编码,则其平均码长为1.95。

二、解答题

1.某二叉树的中序遍历结果为DEFABCG;后序遍历结果为FEDCBAG。

(1)画出此二叉树,并给出其先序遍历的结果。

GADBEFC

(2)画出与这棵二叉树对应的树(森林)。

 

2.已知一个二叉树的先序遍历序列为:

ABDGIECFH;中序遍历序列为:

DIGBEAFHC。

(1)画出该二叉树

(2)画出下图所示森林对应的二叉树。

LA

 

3.某二叉树层序序列为abcdefghij,中序序列为bgdhjaecif。

(1)画出该二叉树;

(2)画出该二叉树的后序后继线索树;

(3)画出该二叉树对应的树或森林。

4.已知某通讯用电文仅有A、B、C、D、E、F六个字符构成,其出现的频率分别为26,8,17,11,28,10,请首先建立哈夫曼树,然后给出六个字符的哈夫曼编码(注:

建立哈夫曼树时权值小的为左子树,权值大的为右子树)。

三、算法题

1.以二叉链表作为二叉树的存储结构,编写以下算法:

(1)求先序序列为k的结点的值

(2)求二叉树中叶子结点的数目

(3)交换所有结点的左右子树

(4)求二叉树的深度

第七章

一.单选或填空题

1.若某有向图的邻接矩阵A只有0和1两种元素,其中aij=1表示有向图中存在弧,则编号为i顶点的入度可用B表示。

A)邻接矩阵中第i行元素之和B)邻接矩阵中第i列元素之和

C)邻接矩阵中对角线元素之和D)以上均不正确

2.使用邻接表作为某无向图的存储结构,若无向完全图中有n个顶点,则邻接表中必存在个表结点。

A)n2B)2nC)n(n-1)D)2n-1

3.一个含有n个顶点和e条边的无向图,在其邻接矩阵存储结构中共有()零元素。

A.eB.2eC.n2-eD.n2-2e

4.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的()倍。

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

5.下列关于图的叙述中,正确的是()

Ⅰ、回路是简单路径

Ⅱ、存储稀疏图,用邻接矩阵比邻接表更省空间

Ⅲ、若有向图中存在拓扑序列,则该图不存在回路

A.仅ⅡB.仅Ⅰ、ⅡC.仅ⅢD.仅Ⅰ、Ⅲ

6.有n个顶点的无向图至少有条边才能确保是一个连通图。

7.在有n个结点的无向图中,其边数最多为。

8.对于具有n个结点的连通图,它的最小生成树中有条边。

A)n2B)n-1C)n(n-1)D)n(n-1)/2

9.关键路径是AOE网中

A)从源点到汇点的最长路径B)从源点到汇点的最短路径

C)最长回路D)最短回路

10.以下关于图的描述中,正确的是

A)n个顶点的无向完全图有

条边。

B)对任何用顶点表示活动的网络(AOV网)进行拓扑排序的结果是唯一的。

C)若图G的邻接矩阵是对称的,则G一定是无向图

d

D)有向图的邻接矩阵一定是非对称矩阵

11.对下图进行拓扑排序,可以得到不同的拓扑序列的个数是()

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

12.下图为用边表示活动的AOE-网。

则V8的最早发生时间是。

二、解答题

1.已知某无向图的邻接表存储结构如下图所示,求解下列问题:

(1)画出它的无向图;

(2)画出它的的邻接矩阵存储结构;

(3)从顶点A出发,画出其广度优先生成树。

0A14

1B025

2C134

3D25

4E025

5F134

2.已知无向带权图G的邻接矩阵如下所示。

 

(1)从顶点a出发,求其深度优先生成树;

(2)从顶点a出发,根据普里姆算法构造最小生成树,过程在下面的图

(1)至(5)中画出。

(3)给出邻接表存储结构;

3.对于如下图所示的带权有向图,求解关键路径,计算各事件(顶点)的最早发生时间和最迟发生时间,各活动(弧)的最早开始时间和最迟开始时间。

请填写在答题纸的表格中。

k

表1计算各事件(顶点)的最早发生时间和最迟发生时间,请填写在表1的空白处。

顶点

a

b

c

d

e

f

g

h

k

ve

0

6

4

5

7

15

14

18

vl

0

8

10

16

14

18

表2计算各活动(弧)的最早开始时间和最迟开始时间,请填写在表2的空白处。

ab

ac

ad

be

ce

df

eg

eh

fh

gk

hk

e

0

0

0

6

4

5

7

15

14

l

3

8

10

16

14

4.对于右图,求解下列问题:

(1)写出该图的邻接矩阵;

(2)写出全部拓扑排序序列;

(3)从顶点V1出发,给出深度优先遍历生成树;

(4)按照迪杰斯特拉算法,求V1结点到各点的最短路径,填写表1的空白处。

终点

从V1到各终点的距离和最短路径的求解过程

i=1

i=2

i=3

i=4

i=5

i=6

i=7

V2

2

------

--------

--------

--------

--------

--------

V3

3

3

--------

--------

--------

--------

--------

V4

--------

--------

--------

--------

V5

13

13

--------

--------

V6

--------

--------

--------

V7

--------

V8

16

16

16

vj

v2

v3

第九章

一.单选或填空题

1.已知一个长度为11的有序表,使用折半查找的方法,查找第8个元素时所需进行的关键字比较次数为。

2.已知一个长度为16的有序表,使用折半查找的方法,查找一个不存在的元素,则所需进行的关键字比较次数最多是。

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

3.在二叉排序树中,关键字值最大的结点

A)左指针一定为空B)右指针一定为空

C)左右指针均为空D)左右指针均不为空

4.对于下列关键字序列,不可能构成某二叉排序树中一条查找路径的序列是()

A.95,22,91,24,94,71B.92,20,91,34,88,35C.21,89,77,29,36,38D.12,25,71,68,33,34

5.AVL树是一种平衡的二叉排序树,树中任一结点的

A.左、右子树的高度均相同B.左、右子树高度差的绝对值不超过1

C.左子树的高度均大于右子树的高度D.左子树的高度均小于右子树的高度

6.以下关于查找方法的描述中,错误的是

A)平衡二叉树一定也是二叉排序树。

B)有序表的折半查找判定树是二叉排序树。

C)中序遍历一棵二叉排序树,可以得到其数据元素的升序排列。

D)后序遍历一棵二叉排序树,可以得到其数据元素的降序排列。

7.下列二叉排序树中,满足平衡二叉树定义的是()

8、在下列所示的平衡二叉树中插入关键字48后得到一棵新平衡二叉树,在新平衡二叉树中,关键字37所在结点的左、右子结点中保存的关键字分别是()

A、13,48B、24,48C、24,53D、24,90

9.从理论上讲,将数据以何()结构存放,则查找一个数据所用时间不依赖于数据个数n.

A)二叉查找数B)链表C)二叉树D)哈希表

10.为提高散列(Hash)表的查找效率,可以采取的正确措施是()

Ⅰ、增大装填(载)因子Ⅱ、设计冲突(碰撞)少的散列函数

Ⅲ、处理冲突(碰撞)时避免产生聚集(堆积)现象

A.仅ⅠB.仅ⅡC.仅Ⅰ、ⅡD.仅Ⅱ、Ⅲ

二、解答题

1.设记录关键字集合key={33,20,53,55,23,38,40,65},选取哈希函数为H(x)=keymod11;解决冲突的方法为“线性探测法”。

(1)请按上述条件将key中各值依次填入下表中:

(2)求该哈希表查找成功和查找不成功情况下的平均查找长度。

2.设记录关键字集合key={32,13,49,55,22,39,20},选取哈希函数为H(x)=keymod7;解决冲突的方法为“链地址法”。

(1)画出所构造的哈希表;

(2)求该哈希表查找成功和查找不成功情况下的平均查找长度。

3.设记录关键字集合key={32,13,49,55,22,39,20},解决冲突的方法为“线性探测法”,要求装填因子为:

0.7,哈希函数的形式为H(x)=keymodP,散列表的地址从0开始。

(1)构造哈希函数;

(2)画出所构造的哈希表;

(2)求该哈希表查找成功和查找不成功情况下的平均查找长度。

4.选取哈希函数H(key)=(3*key)mod11。

用开放定址法处理冲突,di=i((7*key)%10+1)(i=1,2,3…)。

试在0~10的散列地址空间对关键字序列(22,41,53,46,30,13,01,67):

1)构造该序列对应的哈希表;

2)求等概率情况下查找成功的平均查找长度。

哈希表如下图所示:

5.从空树开始,依次插入13,34,51,24,62,43,75,18,画出建立2-3树后的状态,并分别画出删除43、24后的2-3树状态。

6.画出对长度为12的有序表进行折半查找的判定树,并求其等概率查找成功时的平均查找长度。

第十章

一、单选或填空题

1.数组中原有数据如下:

15,13,20,18,12,60。

下面是一组用不同排序方法进行一趟排序后的结果。

则ABCD四个选项中,说法正确的是

I.12,13,15,18,20,60II.13,15,18,12,20,60

III.13,15,20,18,12,60IV.12,13,20,18,15,60

V.13,15,18,20,12,60

A)I快速排序;II简单选择排序;III直接插入排序;IV冒泡排序;V归并排序

B)I冒泡排序;II快速排序;III归并排序;IV简单选择排序;V直接插入排序

C)I快速排序;II冒泡排序;III直接插入排序;IV简单选择排序;V归并排序

D)I直接插入排序;II归并排序;III快速排序;IV简单选择排序;V冒泡排序

2.对一组数据(2,12,16,88,5,10)进行排序,若前三趟排序结果如下:

第一趟:

2,12,16,5,10,88

第二趟:

2,12,5,10,16,88

第三趟:

2,5,10,12,16,88

则采用的排序方法可能是()

A.冒泡排序法B.希尔排序法C.归并排序法D.基数排序法

3.若一组记录的排序码为(45,78,56,36,40,87),则初始小根堆的结果为

A.36,45,56,78,40,87B.87,78,56,36,40,45

C.40,36,45,56,78,87D.36,40,56,78,45,87

4.已知序列25,13,10,12,9是大根堆,在序列尾部插入新元素18,将其再调整为大根堆,调整过程中元素之间进行的比较次数是()

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

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

当前位置:首页 > 经管营销

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

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