数据结构复习资料.docx
《数据结构复习资料.docx》由会员分享,可在线阅读,更多相关《数据结构复习资料.docx(28页珍藏版)》请在冰豆网上搜索。
数据结构复习资料
数据结构与算法期末考试复习资料
一、单项选择题
()1.软件与程序的区别是∶
A.程序价格便宜、软件价格昂贵;
B.程序是用户自己编写的,而软件是由厂家提供的;
C.程序是用高级语言编写的,而软件是由机器语言编写的;
D.软件是程序以及开发、使用和维护所需要的所有文档的总称,而程序只是软件的一部分。
()2.应用软件是指∶
A.所有能够使用的软件
B.能被各应用单位共同使用的某种软件
C.所有微机上都应使用的基本软件
D.专门为某一应用目的而编制的软件
()3.系统软件中最重要的是∶
A.操作系统B.语言处理系统C.工具软件D.数据库管理系统
()4.可移植性最好的计算机语言是∶
A.机器语言B.汇编语言C.高级语言D.自然语言
()5.非线性结构是数据元素之间存在一种:
A.一对多关系B.多对多关系C.多对一关系D.一对一关系
()6.数据结构中,与所使用的计算机无关的是数据的结构;
A.存储B.物理C.逻辑D.物理和存储
()7.算法分析的目的是:
A.找出数据结构的合理性B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进D.分析算法的易懂性和文档性
()8.算法分析的两个主要方面是:
A.空间复杂性和时间复杂性B.正确性和简明性
C.可读性和文档性D.数据复杂性和程序复杂性
()9.计算机算法指的是:
A.计算方法B.排序方法C.解决问题的有限运算序列D.调度方法
()10.计算机算法必须具备输入、输出和等5个特性。
A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性
C.确定性、有穷性和稳定性D.易读性、稳定性和安全性
()11.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:
A.存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构
()12.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是
A.110B.108C.100D.120
()13.在n个结点的顺序表中,算法的时间复杂度是O
(1)的操作是:
A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)
B.在第i个结点后插入一个新结点(1≤i≤n)
C.删除第i个结点(1≤i≤n)
D.将n个结点从小到大排序
()14.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动个元素
A.8B.63.5C.63D.7
()15.链接存储的存储结构所占存储空间:
A分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
B只有一部分,存放结点值
C.只有一部分,存储表示结点间关系的指针
D.分两部分,一部分存放结点值,另一部分存放结点所占单元数
()16.线性表若采用链式存储结构时,要求内存中可用存储单元的地址:
A.必须是连续的B.部分地址必须是连续的
C.一定是不连续的D.连续或不连续都可以
()17.线性表L在情况下适用于使用链式结构实现。
A.需经常修改L中的结点值B.需不断对L进行删除插入
C.L中含有大量的结点D.L中结点结构复杂
()18.设a1、a2、a3为3个结点,整数P0,3,4代表地址,则如下的链式存储结构称为
P0
3
4
P0
a1
3
a2
4
A3
0
A.循环链表B.单链表C.双向循环链表D.双向链表
()19.串是一种特殊的线性表,其特殊性体现在:
A.可以顺序存储B.数据元素是一个字符
C.可以链式存储D.数据元素可以是多个字符
()20.设有两个串p和q,求q在p中首次出现的位置的运算称作:
A.连接B.模式匹配C.求子串D.求串长
()21.设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是:
A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF
()22.假设有60行70列的二维数组a[1…60,1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为。
(无第0行第0列元素)
A.16902B.16904C.14454D.答案A,B,C均不对
()23.二叉树是非线性数据结构,所以。
A.它不能用顺序存储结构存储;B.它不能用链式存储结构存储;
C.顺序存储结构和链式存储结构都能存储;D.顺序存储结构和链式存储结构都不能使用
()24.把一棵树转换为二叉树后,这棵二叉树的形态是。
A.唯一的B.有多种
C.有多种,但根结点都没有左孩子D.有多种,但根结点都没有右孩子
()25.在一个图中,所有顶点的度数之和等于图的边数的倍。
A.1/2B.1C.2D.4
()26.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的倍。
A.1/2B.1C.2D.4
()27.有8个结点的无向图最多有条边。
A.14B.28C.56D.112
()28.有8个结点的无向连通图最少有条边。
A.5B.6C.7D.8
()29.有8个结点的有向完全图有条边。
A.14B.28C.56D.112
()30.用邻接表表示图进行广度优先遍历时,通常是采用来实现算法的。
A.栈B.队列C.树D.图
()31.用邻接表表示图进行深度优先遍历时,通常是采用来实现算法的。
A.栈B.队列C.树D.图
()32.已知图的邻接矩阵,根据算法思想,则从顶点0出发按深度优先遍历的结点序列是
A.0243156B.0136542C.0423165D.0361542
()33.已知图的邻接矩阵同上题32,根据算法,则从顶点0出发,按广度优先遍历的结点序列是
A.0243651B.0136425C.0423156D.0134256
()34.已知图的邻接表如下所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是
A.0132B.0231C.0321D.0123
()35.已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是
A.0321B.0123C.0132D.0312
()36.深度优先遍历类似于二叉树的
A.先序遍历B.中序遍历C.后序遍历D.层次遍历
()37.广度优先遍历类似于二叉树的
A.先序遍历B.中序遍历C.后序遍历D.层次遍历
()38.在表长为n的链表中进行线性查找,它的平均查找长度为
A.ASL=n;B.ASL=(n+1)/2;
C.ASL=
+1;D.ASL≈log2(n+1)-1
()39.折半查找有序表(4,6,10,12,20,30,50,70,88,100)。
若查找表中元素58,则它将依次与表中比较大小,查找结果是失败。
A.20,70,30,50B.30,88,70,50C.20,50D.30,88,50
()40.对22个记录的有序表作折半查找,当查找失败时,至少需要比较次关键字。
A.3B.4C.5D.6
()41.链表适用于查找
A.顺序B.二分法C.顺序,也能二分法D.随机
()42.折半搜索与二叉搜索树的时间性能
A.相同B.完全不同C.有时不相同D.数量级都是O(log2n)
()43.将5个不同的数据进行排序,至多需要比较次。
A.8B.9C.10D.25
()44.排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为
A.希尔排序B.冒泡排序C.插入排序D.选择排序
()45.排序方法中,从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法,称为
A.希尔排序B.归并排序C.插入排序D.选择排序
()46.对n个不同的排序码进行冒泡排序,在下列哪种情况下比较的次数最多。
A.从小到大排列好的B.从大到小排列好的C.元素无序D.元素基本有序
()47.对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为
A.n+1B.nC.n-1D.n(n-1)/2
()48.快速排序在下列哪种情况下最易发挥其长处。
A.被排序的数据中含有多个相同排序码B.被排序的数据已基本有序
C.被排序的数据完全无序D.被排序的数据中的最大值和最小值相差悬殊
()49.对有n个记录的表作快速排序,在最坏情况下,算法的时间复杂度是
A.O(n)B.O(n2)C.O(nlog2n)D.O(n3)
()50.若一组记录的排序码为(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
()51.将5个不同的数据进行排序,至少需要比较次。
A.4B.5C.6D.7
()52.下列关键字序列中,是堆。
A.16,72,31,23,94,53B.94,23,31,72,16,53
C.16,53,23,94,31,72D.16,23,53,31,94,72
()53.堆是一种排序。
A.插入B.选择C.交换D.归并
()54.堆的形状是一棵
A.二叉排序树B.满二叉树C.完全二叉树D.平衡二叉树
()55.若一组记录的排序码为(46,79,56,38,40,84),则利用堆排序的方法建立的初始堆为
A.79,46,56,38,40,84B.84,79,56,38,40,46
C.84,79,56,46,40,38D.84,56,79,40,46,38
()56.下述几种排序方法中,平均查找长度(ASL)最小的是
A.插入排序B.快速排序C.归并排序D.选择排序
()57.下述几种排序方法中,要求内存最大的是
A.插入排序B.快速排序C.归并排序D.选择排序
()58.目前以比较为基础的内部排序方法中,其比较次数与待排序的记录的初始排列状态无关的是
A.插入排序B.二分插入排序C.快速排序D.冒泡排序
二、填空题
1.数据结构是一门研究非数值计算的程序设计问题中计算机的以及它们之间的和运算等的学科。
2.数据结构被形式地定义为(D,R),其中D是的有限集合,R是D上的有限集合。
3.数据结构包括数据的、数据的和数据的这三个方面的内容。
4.数据结构按逻辑结构可分为两大类,它们分别是和。
5.线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。
6.在线性结构中,第一个结点前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点后续结点,其余每个结点有且只有1个后续结点。
7.在树形结构中,树根结点没有结点,其余每个结点有且只有个前驱结点;叶子结点没有结点,其余每个结点的后续结点数可以。
8.在图形结构中,每个结点的前驱结点数和后续结点数可以。
9.数据的存储结构可用四种基本的存储方法表示,它们分别是
10.数据的运算最常用的有5种,它们分别是
11.一个算法的效率可分为效率和效率。
12.在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数与有关。
13.线性表中结点的集合是的,结点间的关系是的。
14.向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动个元素。
15.向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动个元素。
16.在顺序表中访问任意一结点的时间复杂度均为,因此,顺序表也称为的数据结构。
17.顺序表中逻辑上相邻的元素的物理位置相邻。
单链表中逻辑上相邻的元素的物理位置相邻。
18.在单链表中,除了首元结点外,任一结点的存储位置由指示。
19.在n个结点的单链表中要删除已知结点*p,需找到它的,其时间复杂度为。
20.栈是一种特殊的线性表,允许插入和删除运算的一端称为。
不允许插入和删除运算的一端称为。
21.是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
22.在一个循环队列中,队首指针指向队首元素的位置。
23.在具有n个单元的循环队列中,队满时共有个元素。
24.向栈中压入元素的操作是先,后。
25.从循环队列中删除一个元素时,其操作是先,后。
26.称为空串;称为空白串。
27.设S=“A;/document/Mary.doc”,则strlen(s)=,“/”的字符定位的位置为。
28.子串的定位运算称为串的模式匹配;称为目标串,称为模式。
29.设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第次匹配成功。
30.若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为。
31.假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。
已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为个字节;末尾元素A57的第一个字节地址为;若按行存储时,元素A14的第一个字节地址为;若按列存储时,元素A47的第一个字节地址为。
32.设数组a[1…60,1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为。
33.三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的、和。
34.求下列广义表操作的结果:
(1)GetHead【((a,b),(c,d))】===;//头元素不必加括号
(2)GetHead【GetTail【((a,b),(c,d))】】===;
(3)GetHead【GetTail【GetHead【((a,b),(c,d))】】】===;
(4)GetTail【GetHead【GetTail【((a,b),(c,d))】】】===;
35.一棵深度为6的满二叉树有个分支结点和个叶子。
36.一棵具有257个结点的完全二叉树,它的深度为。
37.设一棵完全二叉树具有1000个结点,则此完全二叉树有个叶子结点,有个度为2的结点,有个结点只有非空左子树,有个结点只有非空右子树。
38.用5个权值{3,2,4,5,1}构造的哈夫曼(Huffman)树的带权路径长度是。
39.图有、等存储结构,遍历图有、等方法。
40.有向图G用邻接表矩阵存储,其第i行的所有元素之和等于顶点i的。
41.n个顶点e条边的图,若采用邻接矩阵存储,则空间复杂度为。
42.n个顶点e条边的图,若采用邻接表存储,则空间复杂度为。
43.设有一稀疏图G,则G采用存储较省空间。
44.设有一稠密图G,则G采用存储较省空间。
45.图的逆邻接表存储结构只适用于图。
46.已知一个图的邻接矩阵表示,删除所有从第i个顶点出发的边的方法是。
47.n个顶点e条边的图采用邻接矩阵存储,深度优先遍历算法的时间复杂度为;若采用邻接表存储时,该算法的时间复杂度为。
48.n个顶点e条边的图采用邻接矩阵存储,广度优先遍历算法的时间复杂度为;若采用邻接表存储,该算法的时间复杂度为。
49.图的BFS生成树的树高比DFS生成树的树高。
50.用普里姆(Prim)算法求具有n个顶点e条边的图的最小生成树的时间复杂度为;用克鲁斯卡尔(Kruskal)算法的时间复杂度是。
51.若要求一个稀疏图G的最小生成树,最好用算法来求解。
52.若要求一个稠密图G的最小生成树,最好用算法来求解。
53.用Dijkstra算法求某一顶点到其余各顶点间的最短路径是按路径长度的次序来得到最短路径的。
54.拓扑排序算法是通过重复选择具有个前驱顶点的过程来完成的。
55.在数据的存放无规律而言的线性表中进行检索的最佳方法是。
56.线性有序表(a1,a2,a3,…,a256)是从小到大排列的,对一个给定的值k,用二分法检索表中与k相等的元素,在查找不成功的情况下,最多需要检索次。
设有100个结点,用二分法查找时,最大比较次数是。
57.假设在有序线性表a[20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为;比较四次查找成功的结点数为;平均查找长度为。
58.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素比较大小。
59.散列法存储的基本思想是由决定数据的存储地址。
60.有一个表长为m的散列表,初始状态为空,现将n(n如果这n个关键码的散列地址都相同,则探测的总次数是。
(而任一元素查找次数≤n-1)
61.考虑具有如下性质的二叉树:
除叶子结点外,每个结点的值都大于其左子树上的一切结点的值。
并小于等于其右子树上的一切结点的值。
现把9个数1,2,3,…,8,9填入右图所示的二叉树的9个结点中,并使之具有上述性质。
此时,n1的值是,n2的值是,n9的值是。
现欲把
放入此树并使该树保持前述性质,增加的一个结点可以放在或。
62.大多数排序算法都有两个基本的操作:
和。
63.在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第7个记录60插入到有序表时,为寻找插入位置至少需比较次。
(可约定为,从后向前比较)
64.在插入和选择排序中,若初始数据基本正序,则选用;若初始数据基本反序,则选用。
65.在堆排序和快速排序中,若初始记录接近正序或反序,则选用;若初始记录基本无序,则最好选用。
66.对于n个记录的集合进行冒泡排序,在最坏的情况下所需要的时间是。
若对其进行快速排序,在最坏的情况下所需要的时间是。
67.对于n个记录的集合进行归并排序,所需要的平均时间是,所需要的附加空间是。
68.对于n个记录的表进行2路归并排序,整个归并排序需进行趟(遍),共计移动次记录。
69.设要将序列(Q,H,C,Y,P,A,M,S,R,D,F,X)中的关键码按字母序的升序重新排列,则:
冒泡排序一趟扫描的结果是;
初始步长为4的希尔(shell)排序一趟的结果是;
二路归并排序一趟扫描的结果是;
快速排序一趟扫描的结果是;
堆排序初始建堆的结果是。
70.在堆排序、快速排序和归并排序中,
若只从存储空间考虑,则应首先选取方法,其次选取方法,最后选取方法;
若只从排序结果的稳定性考虑,则应选取方法;
若只从平均情况下最快考虑,则应选取方法;
若只从最坏情况下最快并且要节省内存考虑,则应选取方法。
三、应用题
1.分析下面各程序段的时间复杂度(每小题5分,共20分)
(1)for(i=0;ifor(j=0;jA[i][j]=0;
(2)s=0;
fori=0;ifor(j=0;js+=B[i][j];
sum=s;
(3)x=0;
for(i=1;ifor(j=1;j<=n-i;j++)
x++;
(4)i=1;
while(i<=n)
i=i*3;
2.设有数据逻辑结构S=(D,R),试按各小题所给条件画出这些逻辑结构的图示,并确定相对于关系R,哪些结点是开始结点,哪些结点是终端结点?
(1)D={d1,d2,d3,d4}R={(d1,d2),(d2,d3),(d3,d4)}
(2)D={d1,d2,…,d9}
R={(d1,d2),(d1,d3),(d3,d4),(d3,d6),(d6,d8),(d4,d5),(d6,d7),(d8,d9)}
(3)D={d1,d2,…,d9}
R={(d1,d3),(d1,d8),(d2,d3),(d2,d4),(d2,d5),(d3,d9),
(d5,d6),(d8,d9),(d9,d7),(d4,d7),(d4,d6)}
3.画出如图所示二叉树的存储表示,分别使用
(1)顺序表示
(2)二叉链表表示法(3)三叉链表。
4.把如图所示的树转化成二叉树。
5.画出和下列二叉树相应的森林。
6.假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。
试为这8个字母设计哈夫曼编码。
使用0~7的二进制表示形式是另一种编码方案。
对于上述实例,比较两种方案的优缺点。
7.给出右图的邻接矩阵、邻接表和逆邻接表表示。
8.已知二维数组表示的图的邻接矩阵如下图所示。
试分别画出自顶点1出发进行遍历所得的深度优先生成树和广度优先生成树。
9.以下图为例,按Dijkstra算法计算得到的从顶点A到其它各个顶点的最短路径和最短路径长度。
10.试对右图