数据结构复习题2.docx
- 文档编号:8064907
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:19
- 大小:221.71KB
数据结构复习题2.docx
《数据结构复习题2.docx》由会员分享,可在线阅读,更多相关《数据结构复习题2.docx(19页珍藏版)》请在冰豆网上搜索。
数据结构复习题2
、选择题
1)数据结构通常是研究数据的(A)及它们之间的相互联系。
A.存储结构和逻辑结构B.存储和抽象C.联系和抽象D.联系与逻辑
2)在逻辑上可以把数据结构分成:
(C)。
A.动态结构和静态结构B.紧凑结构和非紧凑结构
C.线性结构和非线性结构D.内部结构和外部结构
3)数据在计算机存储器内表示时,物理地址和逻辑地址相同并且是连续的,称之为
(C)。
A.存储结构B.逻辑结构
C.顺序存储结构D.链式存储结
4)
算法分析的两个主要方面是(
A)。
A.空间复杂性和时间复杂性
B.
正确性和简明性
C.可读性和文档性
D.
数据复杂性和程序复杂性
5)
下列时间复杂度中最坏的是(
D)。
A.O
(1)B.O(
n)
C.
2
O(log2n)D.O(n2)
6)等概率情况下,在有
n个结点的顺序表上做插入结点运算,需平均移动结点的数目为
C)。
A.nB.(n-1)/2C.n/2D.(n+1)/2
7)设有编号为1,2,3,4的四辆列车,顺序进入一个栈结构的站台,下列不可
能的出站顺序为
(D)
A
.1234
B.
1243
C
.1324D
.1423
(8)
如果以链
表作为
栈的存储
结构,
则出栈操作时(
B)
A
.必须判
别栈是
否满
B.必须判别栈是
否空
C
.必须判
别栈元
素类型
D
.队栈可不做任何
判别
(9)
链栈与顺
序栈相
比,有一
个比较
明显的优点是(
B)
A.插入操作更加方便B.通常不会出现栈满的情况。
front和rear的值分别为3和0,当
C.不会出现栈空的情况D.删除操作根加方便
10)插入和删除只能
在一端进
行的线
性表,称为(
C
)。
A.队列B.
循环队列
C
.栈
D
.循环栈
11)若进队的序列为:
A,B,
C,D,
则出队的序列是(
(
C)。
A.B,C,D,A
B.A,
C,
B,D
C.A,B,C,D
D.C,
B,
D,A
12)若用一个大小为6的数组来实现循环队列,且当前
从队列中删除一个元素,再加入两个元素后,front和rear的值分别为(B)
A.5和1B.4和2C.2和4D.1和5
(13)S="morning",执行求子串函数SubStr(S,2,2)后的结果为(B)。
A."mo"B."or"C."in"D."ng"
(14)S1="good",S2="morning",执行串连接函数ConcatStr(S1,S2)后的结果为(A)。
A."goodmorning"
C."GOODMORNING"
B."goodmorning"
D."GOODMORNING"
(15)S1="good",S2="morning",执行函数SubStr(S2,4,LenStr(S1))后的结果为(B)。
A."good"
B."ning"
C."go"
16)设串S1="ABCDEFG"
D."morn"
,S2="PQRST",
则ConcatStr(SubStr(S1,2,LenStr(S2)),SubStr(S1,LenStr(S2),2))
的结
果串为
(D)。
A.BCDEF
B.BCDEFG
C.BCPQRST
D.BCDEFEF
(17)已知二维数组放数组元素a[3][5]
A[6][10],每个数组元素占4个存储单元,若按行优先顺序存
B
的存储地址是1000,则a[0][0]的存储地址是(
)。
A.872
B.860
868
D.
864
18)在一棵具有五层的满二叉树中,结点的总数为
A.16B.31
19)具有64个结点的完全二叉树的深度为(
A.5B.6
C.32
C)
C.7
D.
33
(20)具有n(n>1)个结点的完全二叉树中,结点
i(2i>n)
的左孩子结点是(
D)。
A.2iB.2i+1
(若2i<=n,则答案为A)
(21)将一棵有100个结点的完全二叉树从上到下,
号为1,则编号为45的结点的左孩子编号为(
C.2i-1
D.
不存在
从左到右依次对结点编号,
根结点的编
B)。
A.46B.47
(22)将一棵有100个结点的完全二叉树从上到下,号为1,则编号为49的结点的右孩子编号为(
C.90D.
从左到右依次对结点编号,
91
根结点的编
B)。
C.50
A.98B.99
23)用5个权值{3,2,4,5,1}构造的哈夫曼树的带权路径长度是(
D.
100
)。
A.32
B.33
C.34
D.
15
(先构造哈夫曼树,WPL=(1+2)*3+(3+4+5)*2=33)
24)二叉树的叶结点个数比度为2的结点的个数(C
B.相等C.多一个
)。
A.无关
少一个
25)
对于一个具有
n个顶点的有向图的边数最多有(B
)。
26)
B.n(n-1)
在一个具有n个顶点的无向图中,要连通全部顶点至少需要(
C.
n(n-1)/2
B.n+1
C.n-1
.2n
条边。
.n/2
27)
对于一个具有n个顶点和e条边的无向图,采用邻接表表示,则表头向量大小为
)。
.n-1
B.n+1
C.n
D.n+e
在图的表示法中,表示形式唯一的是(
28)
A.邻接矩阵表示法
A)。
.邻接表表示法
C.逆邻接表表示法D.邻接表和逆邻接表表示法
(29)对有14个元素的有序表A[1..14]作二分查找,查找元素A[4]时的被比较元素依次为
(C)。
A.A[1],A[2],A[3],A[4]B.A[1],A[14],A[7],A[4]
C.A[7],A[3],A[5],A[4]D.A[7],A[5],A[3],A[4]
(30)不可能生成下图二叉排序树的关键字的序列是(A)。
A.45312B.42531C.45213D.42315
(31)排序方法中,从无序序列中选择关键字最小的记录,将其与无序区(初始为空)的第
一个记录交换的排序方法,称为(D)。
A.希尔排序B.归并排序C.插入排序D.选择排序
(32)每次把待排序方的区间划分为左、右两个区间,其中左区间中元素的值不大于基准元
素的值,右区间中元素的值不小于基准元素的值,此种排序方法叫做(C)。
A.冒泡排序B
.堆排序
C
.快速排序
D.归并排序
(33)直接插入排序的方法是从第(B
插入到前边适当位置的排序方法。
丿个元糸开始,
A.1B
.2C
.3
D
.n
(34)堆的形状是一棵(
C)o
A.二叉排序树B
.满二叉树
C
.完全一
二叉树
D.平衡二叉树
(35)—组记录的排序码为
(25,48,16,
35,
79,82,
23,40)
,其中含有4个长度为2
的有序表,按归并排序的方法对该序列进行一趟归并后的结果为:
(A)。
A,16253548234079823672
C.16254835798223364072
个数为基准得到第一次划分的结果为:
(
(nlog2n)o
(2)当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快速度存
取线性表中的元素时,应采用顺序存储结构。
(3)对一个需要经常进行插入和删除操作的线性表,采用链式存储结构为宜。
(4)双链表中,设p是指向其中待删除的结点,则需要执行的操作为:
p>prior->next=p>next
(5)A+B/C-D*E的后缀表达式是:
ABC/+DE*-。
(6)解决顺序队列“假溢出”的方法是采用循环队列。
(7)循环队列的队首指针为front,队尾指针为rear,则队空的条件为front==
rear。
(8)设循环队列的头指针front指向队首元素,尾指针rear指向队尾元素后的一
个空闲元素,队列的最大空间为MAXLEN,则队满标志为:
front==(rear+1)%MAXLEN。
(9)设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有
front=11,rear=19,则循环队列中还有8个元素。
(L=(N+rear—front)%
N=(40+19—11)%40=8)
(10)设S="MyMusic",贝ULenStr(s)=_8。
(11)两个字符串分别为:
S仁"Todayis",S2="30
July,2005",ConcatStr(S1,S2)的结果是:
Todayis30July,2005。
(12)求子串函数SubStr("Todayis30July,2005",13,4)的结果是:
July。
(13)在串的运算中,EqualStr(aaa,aab)的返回值为<0。
(14)多维数组的顺序存储方式有按行优先顺序存储和按列优先顺序存储两种。
(15)
在多维数组中,数据元素的存放地址可以直接通过地址计算公式算出,所以多维数组是一种随机存取结构。
LOC[1,2]=2024。
(23)n阶下三角矩阵,因为对角线的上方是同一个常数,需要n(n-1)/2+1个存储单元。
(24)稀疏矩阵的三元组有3列。
(25)稀疏矩阵的三元组中第1列存储的是数组中非零元素所在的行数。
(26)n阶对称矩阵,如果只存储下三角元素,只需要n(n-1)/2个存储单元。
(27)哈夫曼树是带权路径长度最小—的二叉树。
(28)由二叉树的后序和—中序—遍历序列,可以唯一确定一棵二叉树。
(29)某二叉树的中序遍历序列为:
DEBAC,后序遍历序列为:
EBCAD。
则前序遍历序列
为:
DABEC。
(30)设一棵二叉树结点的先序遍历序历为:
ABDECFGH,中序遍历序历为:
DEBAFCHG,
(31)对于二叉树来说,第i层上至多有2i-1个结点。
(32)深度为h的二叉树至多有2h-l个结点。
(33)采用二叉链表存储的n个结点的二叉树,一共有2n个指针域。
(34)采用二叉链表存储的n个结点的二叉树,共有空指针n+1个。
(35)将一棵完全二叉树按层次编号,对于任意一个编号为i的结点,其左孩子结点的编号
为:
_2*_。
(36)图常用的存储方式有邻接矩阵和邻接表等。
(37)图的遍历有:
深度优先搜和广度优先搜等方法。
(38)设有一稀疏图G则G采用_邻接表_存储比较节省空间。
(39)设有一稠密图G则G采用_邻接矩阵_存储比较节省空间。
(40)在关键字序列(7,10,12,18,28,36,45,92)中,用二分查找法查找关键字92,
要比较4次才找到。
(41)二叉排序树是一种动态查找表。
(42)哈希表是按散列存储方式构造的存储结构
(43)哈希法既是一种存储方法,又是一种查找方法。
(44)散列表的查找效率主要取决于散列表造表时选取的散列函数和处理冲突的方法。
三、程序填空
(1)在带头结点head的单链表的结点a之后插入新元素x,试完成下列程序填空。
structnode
{elemtypedata;
node*next;
};
voidIkinsert(node*head,elemtypex)
{node*s,*p;
s=newnode;
s->data=x;
p=head->next;
while(p!
=NULL)&&(p->data!
=a)
p=p->next;
if(p==NULL)
cout<<"不存在结点a!
";
else{_s->next=p->next__:
p->next=s:
}
}
(2)假定用一个循环单链表表示一个循环队列,该队列只设一个队尾指针rear,试填空
typedefstructqueuenode
{intdata;
structqueuenode*next;
}QueueNode;
InQueue(QueueNode*rear,intx)
{QueueNode*rear;
QueueNode*head,*s;
s=newQueueNode;s->data=x;if(rear==NULL)
{rear=s;rear->next;}
else
{head=rear->nextrear->next=s;
rear=s;
rear->next=head;
}
}
//定义队列的存储结构
//向队列插入元素为x的函数
//循环队列为空,则建立一个结点的循环队列
//循环队列非空,则将s插到后面
(3)下面程序是把两个串r1和r2首尾相连的程序,即:
r1=r1+r2,试完成程序填空。
typedefStruct
{charvec[MAXLEN];
intlen;
//定义合并后串的最大长度
//len为串的长度
}St
voidConcatStr(Str*r1,Str*r2)
{inti;
cout<
if(r1->len+r2->len>MAXLEN)
cout<<"两个串太长,溢出!
"
//字符串连接函数
else
{for(i=0;i
//把r2连接到r1
r1->vec[r1->len+i]=r2_>vec[i];
r1->vec[r1->len+i]='\0';
r1->len=r1->len+r2->len;
//添上字符串结束标记
//修改新串长度
(4)下面算法是判断字符串是否为回文(即正读和倒读相同),试完成程序填空。
#include"stdio.h"
typedefstruct
{charvec[MAXLEN];
intlen;
}str;
voidPalindrome(strs)
{inti=0;
ingj=s.len-1;
while(j-i>=1)
{if(s.vec[i]==s.vec[j])
//(或j=j+1)
{i++;j--;continue}
else
break;
}
if(j-i>=1)
cout<<"Itisnotapalindrome\n";
else
四、应用题
ACDBGIHF和ABCDEFGHI
(1)已知一棵二叉树的后序遍历和中序遍历的序列分别为:
请画出该二叉树,并写出它的前序遍历的序列。
解:
恢复的二叉树为:
H
(2)把下列一般树转换为二叉树
解:
解:
A
解:
还原后的二叉树为:
(5)假设用于通信的电文仅由
A、B、C、D、E、F、G8个字母组成,字母在电文中出现
的频率分别为7,19,2,6,32,3,21,10。
试为这8个字母设计哈夫曼编码。
解:
(左子为0,右子为1。
)
以权值:
2、3、6、7、10、19、21、32构造哈夫曼树:
100
0
1
40
0
0
1
1
0
1
0
1
1
17
0
10
]字母编号—
对应编码
出现频率
A
1010
7
B
00
19
C
10000
2
D
1001
6
E
11
32
D
10001
3
E
01
21
(6)有向图如下图所示,画出邻接矩阵和邻接表
解:
邻接矩阵
1'01
101
010
001
000
010」
(1,2),(2,3),(2,4),(3,4),(4,5)。
试画出该无向图,并从顶点0出发,
度优先搜索和按广度优先搜索进行遍历的结点序列。
解:
从顶点0岀发的深度优先搜索遍历的结点序列:
012345(答案不唯一)
从顶点0岀发的广度优先搜索遍历的结点序列:
012453(答案不唯一)
(8)网G的邻接矩阵如下,试画出该图,并画出它的一棵最小生成树。
■0
8
10
11
01
8
0
3
0
13
10
3
0
4
0
11
0
4
0
7
「°
13
0
7
0一
(10)给定结点的关键字序列为:
19,14,23,1,68,20,84,27,55,11,10,79。
设散列表的长度为13,散列函数为:
H(K)=K%13。
试画出线性探测再散列解决冲突时所构造的散列表,并求出其平均查找长度。
解:
线性探测再散列解决冲突时所构造的散列表:
0123456789101112
14
1
68
27
55
19
20
84
79
23
11
10
①②①④③①①③⑨①①③
(11)给定结点的关键字序列为:
47,7,29,11,16,92,22,8,3,哈希表的长度为11。
设散列函数为:
H(K)=K%11。
试画出平方探测再散列解决冲突时所构造的散列表,并求出其平均查找长度。
解:
平方探测再散列解决冲突时所构造的散列表。
0
1
2
3
4
5
6
7
8
9
10
11
22
3
47
92
16
7
29
8
①
②
②
①
①
①
①
②
②
平均查找长度ASL=(1*5+2*4)/9=13/9=5/3(或1.44)
(12)
已知数据序列{12,02,16,30,28,10,17,20,06,18},写出希尔排序每一趟排
11
d=2
12021606171218203028
d=102061012161718202830
(13)
已知数据序列{10,18,4,3,6,12,9,15},写出二路归并排序的每一趟排序结果。
[1018][34][612][915]第一趟排序结果
[34
10
18]
[6
9
12
15]
第二趟排序结果
1
[34
6
910
12
15
18]
第三趟排序结果
(14)已知数据序列
{53,
36,
48,
36,
60,7,18,41},写出采用简单选择排序的每一趟
排序结果。
解:
[533648
36
60_
71841]
(7)
[3648
36
60
53
18
41]
(7
18)
[48
36
60
53
36
41]
(7
18
36)
[48
60
53
36
41]
(7
18
36
36)
[60
53
48
41]
(7
18
36
36
41)
[53
48
60]
(7
18
36
36
41
48)
[53
60]
(7
18
36
36
41
48
53)
[60]
(7
18
36
36
41
48
53
60
)
(15)已知数据序列{10,1,15,18,7,15},试画出采用快速排序法,第一趟排序的结果。
解:
一fH
交换
7115
18[10]15
low
high
交换
第一趟排序结果:
71[10]181515
lowhigh
五、程序设计第二章一个,第六章一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习题
![提示](https://static.bdocx.com/images/bang_tan.gif)