数据结构复习题 2.docx

上传人:b****9 文档编号:25648349 上传时间:2023-06-11 格式:DOCX 页数:14 大小:66.88KB
下载 相关 举报
数据结构复习题 2.docx_第1页
第1页 / 共14页
数据结构复习题 2.docx_第2页
第2页 / 共14页
数据结构复习题 2.docx_第3页
第3页 / 共14页
数据结构复习题 2.docx_第4页
第4页 / 共14页
数据结构复习题 2.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据结构复习题 2.docx

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

数据结构复习题 2.docx

数据结构复习题2

一、填空题

1.栈中元素的进出原则是,队列中元素的进出原则是。

2.设指针p指向单链表中结点A,指针s指向被插入的结点X,则在结点A的前面插入结点X时的操作序列为:

1)s->next=___________;2)p->next=s;3)t=p->data;

4)p->data=___________;5)s->data=t;

3.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[6,6]=。

4.表达式a*(b+c)-d/e的后缀表达式为。

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

6.设一棵完全二叉树中有100个结点,则该二叉树的深度为__________;若用二叉链表作为该完全二叉树的存储结构,则共有___________个空指针域。

7.设有向图G的存储结构用邻接矩阵A来表示,则A中第i行中所有非零元素个数之和等于顶点i的________。

8.利用逐点插入法建立序列(50,72,43,85,75,20,35,45,65,30)对应的二叉排序树以后,查找元素20要进行次元素间的比较。

9.在活动图中,节点表示项目中各个工作阶段的里程碑,连接各个节点的边表示活动,边上的数字表示活动持续的时间。

在右边的活动图中,从A到J的关键路径长度是,从E开始的活动启动的最早时间是。

10.设一组初始记录关键字序列为(20,18,22,16,30,19),则根据这些初始关键字序列建成的初始大根堆序列为________________________。

11.已知待散列的线性表为(36,15,40,63,22),散列用的一维地址空间为[0..6],假定选用的散列函数是H(K)=Kmod7,若发生冲突采用线性探查法处理,求出在查找每一个元素概率相等情况下的平均查找长度。

12.在下面的程序段的时间复杂度为。

for(inti=1;i

for(intj=1;j

a[i][j]=i*j;

13.设二维数组A[0..10,0..20]按行优先顺序存储,每个元素占4个存储单元,A[2,1]的存储地址是1000,则A[5,6]的存储地址是。

14.在循环单链表La(La为头指针)中,指针p所指结点为表尾的条件。

15.设s=’YOUARESTUDENTITRIGHTORWRONG’,顺序执行下列操作:

SubString(sub1,s,1,8);SubString(sub2,s,20,5);StrCat(sub1,sub2);则最后sub1的值为:

16.顺序存放的循环队列的元素以数组A[m]存放,其头尾指针分别为front和rear,则当前队列中的元素个数为。

17.算法分析考虑的两个主要因素是和。

18.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是。

19.若待排序序列中具有相同关键字的记录在排好序后其相对位置发生了变化,则称这种排序方法是。

20.为了保证图中的各顶点在遍历过程中访问且仅访问一次,需要为每个顶点设一个访问标志,因此要为图设置一个,用于标示图中每个顶点是否被访问过。

二、单项选择题

1.以下与数据的存储结构无关的术语是()。

A.顺序队列B.链表

C.有序表D.链栈

2.以下数据结构中,()是非线性数据结构。

A.树B.字符串C.队列D.栈

3.算法分析的两个主要方面是()。

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

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

4.线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。

A.必须是连续的B.部分地址必须是连续的

C.一定是不连续的D.连续或不连续都可以

5.设输入序列为1、2、3,则通过栈的作用后不可以得到的输出序列为()。

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

6.广义表(a,(b,c))的表头和表尾分别为()。

A.a和(b,c)B.(a)和(b,c)

C.a和((b,c))D.(a)和((b,c))

7.栈和队列的共同特点是()。

A.只允许在端点处插入和删除元素

B.都是先进后出

C.都是先进先出

D.没有共同点

8.下面程序段的时间复杂度为()。

for(inti=1;i

for(intj=1;j

a[i][j]=0;

A.O(m2)B.O(m*n)C.O(n*n)D.O(log2n)

9.在双向循环链表中,在p指针所指的节点后插入q所指向的新节点,其修改指针的操作是()。

A.p->next=q;q->prior=p;p->next->prior=q;q->next=q;B.p->next=q;p->next->prior=q;q->prior=p;q->next=p->next;C.q->prior=p;q->next=p->next;p->next->prior=q;p->next=q;D.q->prior=p;q->next=p->next;p->next=q;p->next->prior=q;

10.设一条单链表的头指针变量为head且该链表没有头结点,则其判空条件是()。

A.head==NULLB.head->next==NULL

C.head->next==headD.head!

=NULL

11.判定一个队列Q(最多元素为m)为满队列的条件是()。

A.Q->rear-Q->front==mB.Q->rear-Q->front-1==m

C.Q->front==Q->rearD.Q->front==Q->rear+1

12.串的长度是指()。

A.串中所含不同字母的个数B.串中所含字符的个数

C.串中所含不同字符的个数D.串中所含非空格字符的个数

13.设有一个10阶的下三角矩阵A(包括对角线),按照从上到下、从左到右的顺序存储到连续的55个存储单元中,每个数组元素占1个字节的存储空间,则A[5][4]地址与A[0][0]的地址之差为()。

A.10B.19C.28D.55

14.在下述结论中,正确的是()。

①只有一个结点的二叉树的度为0;

②二叉树的度为2;

③二叉树的左右子树可任意交换;

④深度为K的完全二叉树结点个数小于或等于深度相同的满二叉树;

A.①②③B.②③④C.②④D.①④

15.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()。

A.9B.11C.15D.不确定

16.具有n个顶点的无向连通图的生成树应有()条边。

A.n-1B.nC.n+1D.n+2

17.设有向无环图G中的有向边集合E={<1,2>,<2,3>,<3,4>,<1,4>},则下列属于该有向图G的一种拓扑排序序列的是()。

A.1,2,3,4B.2,3,4,1

C.1,4,2,3D.1,2,4,3

18.对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为()。

A.(n-1)/2B.n/2C.(n+1)/2D.n

19.从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)一端的方法称为()。

A.归并排序B.冒泡排序

C.插入排序D.选择排序

20.若一组记录的排序码为(46,79,56,38,40,84),则利用快速排序方法,以第一个记录为基准得到的一次划分结果为()。

A.38,40,46,56,79,84B.40,38,46,79,56,84

C.40,38,46,56,79,84D.40,38,46,84,56,79

21.设某个栈的入栈序列是A,B,C,D,E,则下面4个选项中不可能的出栈序列是。

A.ADBECB.BCDEAC.EBCADD.EABCD

22.广义表(a,(b,c),d)的表头和表尾分别为。

A.a和(b,c),dB.(a)和(b,c),dC.a和((b,c),d)D.(a)和((b,c),d)

23.设有向图的顶点个数为n,则该图是有向完全图的条件是边的条数满足。

A.n(n-1)B.n(n-1)/2C.n(n+1)/2D.n(n+1)

24.一个有n个顶点的无向连通图的生成树,其边的条数为。

A.n-1B.nC.n+1D.nlogn

25.一个有向图用邻接矩阵表示,要删除所有从第i个顶点发出的边,应该。

A.将邻接矩阵的第i行删除B.将邻接矩阵的第i行元素全部置零

C.将邻接矩阵的第i列删除D.将邻接矩阵的第i列元素全部置零

26.已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则完全二叉树的结点个数最多是。

A.39  B.52  C.111 D.119  

27.在线索化二叉树中,t所指结点没有左子树的充要条件是。

A.t->lchild==NULLB.t->ltag==1C.t->ltag==0D.以上都不对

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

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

B.左、右子树的高度均相同

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

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

29.下列四个序列中,哪一个是堆。

A.75,65,30,15,25,45,20,10B.75,65,45,10,30,25,20,15

C.75,45,65,30,15,25,20,10D.75,45,65,10,25,30,20,15

30.下列排序在一趟结束后不一定能选出一个元素放在其最终位置上的是。

A.选择排序B.归并排序C.冒泡排序D.快速排序

31.一组记录的关键字为46,79,56,38,40,84,利用快速排序的方法,以第一个记录为基准得到的一次划分结果为。

A.38,40,46,56,79,84B.40,38,46,79,56,84

C.40,38,46,56,79,84D.40,38,46,84,56,79

 32.下列叙述中,不符合m阶B树定义要求的是。

 A.根节点最多有m棵子树    B.所有叶结点都在同一层上  

C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接  

三、应用题

1.设某棵二叉树的先序遍历序列为ABDFCEGH,中序遍历序列为BFDAGEHC,要求画出此二叉树并给出该二叉树的后序遍历序列。

2.设有无向连通网络G如下图所示

(1)画出其邻接矩阵存储;

(2)从顶点①搜索所得的深度优先搜索(DFS)序列和广度优先搜索(BFS)序列;

(3)请采用普里姆或克鲁斯卡尔算法画出G的最小生成树。

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

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

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

百公里)

pe

n

pa

L

T

M

Pe

109

82

81

21

124

N

109

58

55

108

32

PA

82

58

3

97

92

L

81

55

3

95

89

T

21

108

97

95

113

M

124

32

92

89

113

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

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

(3).画出该图按权值递增的顺序来构造的最小(代价)生成树.

4.已知某系统在通信联络中只可能出现4种字符:

a,b,c,d,其概率分别为1,3,5,7。

要求:

(1)画出对应的哈夫曼树(要求左子树根结点的权小于等于右子树根结点的权)。

(2)为这4个字符设计哈夫曼编码(要求左分支为0,右分支为1)。

(3)计算该哈夫曼树的最小加权路径长度WPL。

5.已知某系统在通信联络中只可能出现8种字符a,b,c,d,e,f,g,h,其概率分别为5,25,3,6,10,11,36,4。

要求:

(1)画出对应的哈夫曼树(要求左子树根结点的权值小于等于右子树根结点的权值)。

(2)为8个字符设计哈夫曼编码(规定左子树编码为0,右子树编码为1)。

(3)计算该哈夫曼树的最小加权路径长度WPL。

6.已知一个二叉树的顺序存储结构图如下:

(1)请画出该二叉树;

(2)写出该二叉树先序、中序遍历序列;

(3)将其转化成等价的树或森林。

下标

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

结点

A

B

C

D

E

F

G

H

I

J

7.已知一有向网的邻接矩阵如下,如需在其中一个结点建立娱乐中心,要求该结点距其它各结点的最长往返路程最短,相同条件下总的往返路程越短越好,问娱乐中心应选址何处?

给出解题过程。

8.AOE网可用来估算工程的完成时间,图3是某项工程AOE网的邻接表表示(V1地址为1),其中表结点第一个域为顶点,第二个域为权值。

顶点Vi表示事件,数字i表示事件的编号,边的数字(权值)表示活动所需的天数,求:

(1)分别画出此项工程对应的邻接矩阵和AOE网。

(2)以顶点V1出发广度遍历图G(邻接表表示)所得的顶点序列。

(3)给出图G的一个拓扑排序序列。

(4)计算此项工程各事件(顶点)的ve(vi)和vl(vi)的函数值,各活动弧的e(ai)和l(ai)的函数值,即各事件和各活动弧的最早开始时间和最迟开始时间?

(5)根据计算结果确定此工程的关键路径及完成此工程的工期(即所需的最少天数)?

9.给定一组关键字序列(SUN,MON,TUE,WED,THU,FRI,SAT),建立一个长度为10的哈希表,哈希函数为H(K)=(K中第一个字母在字母表中的序号)%7。

要求:

,并计算:

对以下

(1)分别用线性探测和链地址两种方法处理冲突,画出所对应构造的哈希表(散列表)。

(2)设每个记录的查找概率相等,分析并计算在以上两种处理冲突方法所构造的哈希表中进行查找时,查找成功的平均查找长度(ASLsucc)以及查找不成功的平均查找长度(ASLunsucc)。

10.将关键字序列(7,8,30,11,18,9,14),散列存储到散列表中,散列表的存储空间是一个下标从0开始的一个一维数组,散列函数为H(Key)=(Key×3)%P。

处理冲突采用线性探测再散列法,已知装填因子为0.7。

要求:

(1)画出所构造的散列表(哈希表)。

(2)分别计算等概率情况下,查找成功和查找不成功的平均查找长度。

四、算法分析与设计题

1.下面程序段的功能实现数据x进栈,要求在下划线处填上正确的语句。

typedefstruct{ints[100];inttop;}sqstack;

voidpush(sqstack&stack,intx)

{

if(stack.top==m-1)printf(“overflow”);

else{____________________;

_________________;}

}

2.二叉搜索树的查找——递归算法:

boolFind(BTreeNode*BST,ElemType&item)

{

if(BST==NULL)

returnfalse;//查找失败

else{if(item==BST->data){

item=BST->data;//查找成功

return___________;}

elseif(itemdata)

returnFind(______________,item);

elsereturnFind(_______________,item);

}//if

}

3.下面程序段的功能是实现二分查找算法,请在下划线处填上正确的语句。

structrecord{intkey;intothers;};

intbisearch(structrecordr[],intk)

{intlow=0,mid,high=n-1;

while(low<=high)

{

________________________________;

if(r[mid].key==k)return(mid+1);

elseif(____________)high=mid-1;

elselow=mid+1;}

return(0);}

4.下面是一趟快速排序的算法,待排序记录存放在记录数组r中,请在横线上填空,把算法补充完整。

intQKPass(RecordTyper[],intlow,inthigh)

{x=r[low];/*选择基准记录*/

while(low

{while(low=x.key)

high--;

if(low

while(low

low++;

if(low

}

r[low]=x;/*将基准记录保存到low=high的位置*/

returnlow;/*返回基准记录的位置*/

}/*QKPass*/

5.

(1)将两个非递减的有序链表合并为一个非递增的有序链表。

要求结果链表仍使用原来两个链表的存储空间,不另外占用其它的存储空间。

表中允许有重复的数据。

(2)设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A的元素类型为整型,要求B、C表利用A表的结点)。

(3)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O

(1)的算法,该算法删除线性表中所有值为item的数据元素。

6.设计判断两个二叉树是否相同的算法。

data 

next

7.已知带有表头结点的单链表,结点结构为:

假设该链表只给出了头指针list。

在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。

若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。

要求:

  

(1)描述算法的基本设计思想。

(2)根据设计思想,采用C程序设计语言描述算法,关键之处请给出简要注释。

8.利用二叉树递归遍历算法,编写统计二叉树中叶子结点数目的算法。

二叉树采用二叉链表存储的类型定义如下:

typedefchardatatype;

typedefstructNode

{datatypedata;

structNode*lchild,*rchild;

}BiTree;

9.设二叉排序树按照二叉链表存储,编写算法InsertBST(BSTree*&bst,KeyTypek)在二叉排序树中插入一个结点。

二叉排序树的链式存储结构的类型定义如下:

typedefintKeyType;

typedefstructNode

{KeyTypekey;

structNode*lchild,*rchild;

}BSTree;

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

当前位置:首页 > 总结汇报 > 工作总结汇报

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

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