算法与数据结构习题
- 格式:doc
- 大小:185.00 KB
- 文档页数:8
大学《数据结构与算法分析》课程习题及参考答案模拟试卷一一、单选题(每题 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.5C.6D.85.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。
以下6-8题基于图1。
6.该二叉树结点的前序遍历的序列为( )。
A.E、G、F、A、C、D、BB.E、A、G、C、F、B、DC.E、A、C、B、D、G、FD.E、G、A、C、D、F、B7.该二叉树结点的中序遍历的序列为( )。
A. A、B、C、D、E、G、FB. E、A、G、C、F、B、DC. E、A、C、B、D、G、FE.B、D、C、A、F、G、E8.该二叉树的按层遍历的序列为( )。
A.E、G、F、A、C、D、B B. E、A、C、B、D、G、FC. E、A、G、C、F、B、DD. E、G、A、C、D、F、B9.下面关于图的存储的叙述中正确的是( )。
A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关10.设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建堆的结果?( )A. a,g,h,m,n,p,q,x,zB. a,g,m,h,q,n,p,x,zC. g,m,q,a,n,p,x,h,zD. h,g,m,p,a,n,q,x,z二、填空题(每空1分,共26分)1.数据的物理结构被分为_________、________、__________和___________四种。
1、算法的时间复杂度是指()。
A.算法执行过程中所需要的基本运算次数B.执行算法程序所需要的时间C.算法程序的长度D.算法程序中的指令条数正确答案:A2、算法的空间复杂度是指()。
A.算法程序的长度B.算法程序所占的存储空间C.算法执行过程中所需要的存储空间D.算法程序中的指令条数正确答案:C3、线性表采用链式存储的优点是()。
A.花费的存储空间较顺序储存少B.数据元素的物理顺序与逻辑顺序相同C.便于随机存取D.便于插入和删除操作正确答案:D4、下列叙述中正确的是()。
A.二叉树是线性结构B.线性链表是非线性结构C.线性表是线性结构D.栈与队列是非线性结构5、数据结构中,与所使用的计算机无关的是数据的()。
A.逻辑结构B.物理结构C.物理和存储结构D.存储结构正确答案:A6、存储结构是指()。
A.逻辑结构在计算机中的表示B.数据所占的存储空间量C.存储在外存中的数据D.数据在计算机中的顺序存储方式正确答案:A7、下列关于队列的叙述中,正确的是()。
A.队列是先进后出B.队列是先进先出C.在队列中只能插入数据D.在队列中只能删除数据正确答案:B8、下列关于栈的叙述中,正确的是()。
A.栈只能采用顺序存储B.栈可以采用链式存储,采用链式存储时不会产生栈溢出现象。
C.在栈中只能删除数据D.在栈中只能插入数据9、对长度为n的线性表进行顺序查找,查找成功时,最坏情况下所需要的比较次数为()。
A.n/2B.(n+1)/2C.n+lD.n正确答案:D10、下列叙述中,正确的是()。
A.以上三种说法都不对B.算法就是程序C.设计算法时只需要考虑结果的可靠性D.设计算法时只需要考虑数据结构的设计正确答案:A二、多选题1、如果进栈的顺序为e1,e2,e3,e4,则可能的出栈序列是()。
A.e3,e1,e4,e2B.e4,e3,e2,e1C.e1,e2,e3,e4D.e2,e4,e3,e1正确答案:B、C、D2、已知二叉树后序编历序列是dabec,中续遍历序列是debac,不是其前序编历序列是()。
湖南机电职业技术学院成人教育《算法与数据结构》期末考试复习题作业一一、单选题(第1-25题每题4分)1.以下说法正确的是(A)数据项是数据的基本单位(B)数据元素是数据的最小单位(C)数据结构是带结构的数据项的集合(D)一些表面上很不相同的数据可以有相同的逻辑结构[参考答案:D]2.在决定选取何种存储结构时,一般不考虑(A)各结点的值如何(B)结点个数的多少(C)对数据有哪些运算(D)所用的编程语言实现这种结构是否方便[参考答案:A]3.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储(A)数据的处理方法(B)数据元素的类型(C)数据元素之间的关系(D)数据的存储方法[参考答案:C]4.在数据结构中,从逻辑上可以把数据结构分为(A)动态结构和静态结构(B)紧凑结构和非紧凑结构(C)线性结构和非线性结构(D)内部结构和外部结构[参考答案:C]5.存储稀疏矩阵通常采用()(A)链接存储结构(B)顺序结构(C)二维数组(D)三元组线性表[参考答案:D]6.运算符放在连个运算对象后面的算术表达式称为()(A)前缀表达式(B)中缀表达式(C)后缀表达式(D)波兰式[参考答案:C]7.在计算机中算术表达式的计算是通过()来实现的(A)树(B)图(C)队列(D)栈[参考答案:D]8.设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列()方法可以达到此目的(A)快速排序(B)堆排序(C)归并排序(D)插入排序[参考答案:B]9.设某强连通图中有n个顶点,则该强连通图中至少有()条边(A)n(n-1)(B)n+1(C)n(D)n(n+1)[参考答案:C]10.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和表结点的个数分别为()(A)n,e(B)e,n(C)2n,e(D)n,2e[参考答案:D]11.如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用(A)只有表头指针没有表尾指针的循环单链表(B)只有表尾指针没有表头指针的循环单链表(C)非循环双链表(D)循环双链表[参考答案:B]12.设二叉排序树中有n个结点,则在二叉排序树的平均平均查找长度为()(A)O(1)(B)O(log2n)(C)2(D)O(n)[参考答案:B]13.设一组初始关键字记录关键字为(20,15,14,18,21,36,40,10),则以20为基准记录的一趟快速排序结束后的结果为( )(A)10,15,14,18,20,36,40,21(B)10,15,14,18,20,40,36,21。
绪论1.将下列复杂度由小到大重新排序:A.2n B.n! C.n5D.10 000 E.n*log2 (n)【答】10 000< n*log2(n)< n5< 2n < n!2.将下列复杂度由小到大重新排序:A.n*log2(n) B.n + n2 + n3C.24D.n0.5【答】24< n0.5< n*log2 (n) < n + n2 + n33.用大“O”表示法描述下列复杂度:A.5n5/2 + n2/5 B.6*log2(n) + 9nC.3n4+ n* log2(n) D.5n2 + n3/2【答】A:O (n5/2) B:O (n) C:O (n4) D:O (n2)4.按照增长率从低到高的顺序排列以下表达式:4n2 , log3n, 3n , 20n , 2000 , log2n , n2/3。
又n!应排在第几位?【答】按照增长率从低到高依次为:2000, log3n, log2n , n2/3 , 20n , 4n2 , 3n。
n!的增长率比它们中的每一个都要大,应排在最后一位。
5. 计算下列程序片断的时间代价:int i=1;while(i<=n){printf(“i=%d\n”,i);i=i+1;}【答】循环控制变量i从1增加到n,循环体执行n次,第一句i的初始化执行次数为1,第二句执行n次,循环体中第一句printf执行n次,第二句i从1循环到n,共执行n次。
所以该程序段总的时间代价为:T(n) = 1 + n + 2n = 3n+ 1 = O(n)6. 计算下列程序片断的时间代价:int i=1;while(i<=n){int j=1;while(j<=n){int k=1;while(k<=n){printf(“i=%d,j=%d,k=%d\n”,I,j,k);k=k+1;}j=j+1;}i=i+1;}【答】循环控制变量i从1增加到n,最外层循环体执行n次,循环控制变量j从1增加到n,中间层循环体执行n次,循环控制变量k从1增加到n,最内层循环体执行n次,所以该程序段总的时间代价为:T(n) = 1 + n + n{1 + n + n[1 + n + 2n +1] +1 +1}+ 1= 3n3 + 3n2 +4n +2= O(n3)2. 线性表1.试写一个插入算法int insertPost_seq(palist, p, x ),在palist所指顺序表中,下标为p的元素之后,插入一个值为x的元素,返回插入成功与否的标志。
习题一一、选择题1、数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的(B)和运算的学科。
A.结构B.关系C.运算D.算法2、在数据结构中,从逻辑上可以把数据结构分成(C)。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.逻辑结构和存储结构3、线性表的逻辑顺序和存储顺序总是一致的,这种说法(B)。
A.正确B.不正确C.无法确定D.以上答案都不对4、算法分析的目的是(C)。
A.找出算法的合理性B.研究算法的输人与输出关系C.分析算法的有效性以求改进D.分析算法的易懂性二、填空题1、数据是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,数据是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。
例如,数学中所用到的整数和实数,文本编辑所用到的字符串等。
2、数据元素是数据的基本单位,有些情况下也称为元素、结点、顶点、记录等。
3、数据项是数据不可分割的最小单元,是具有独立含义的最小标识单位。
例如构成一个数据元素的字段、域、属性等都可称之为_数据项。
4、简而言之,数据结构是数据之间的相互关系,即数据的组织形式。
5、数据的逻辑结构是指数据之间的逻辑关系。
逻辑结构是从逻辑关系上描述数据,它与具体存储无关,是独立于计算机的。
因此逻辑结构可以看作是从具体问题抽象出来的数学模型。
6、数据的存储结构指数据元素及其关系在计算机存储器内的表示。
存储结构是逻辑结构在计算机里的实现,也称之为映像。
7、数据的运算是指对数据施加的操作。
它定义在数据的逻辑结构之上,每种逻辑结构都有一个数据的运算。
常用的有:查找、排序、插人、删除、更新等操作。
8、数据逻辑结构可以分为四种基本的类型,集合结构中的元素除了仅仅只是同属于一个集合_,不存在什么关系。
9、数据逻辑结构的四种基本类型中,线性结构_中的元素是一种一对一的关系,这种结构的特征是:若结构是非空集,则有且只有一个开始结点和一个终端结点,并且所有结点最多只能有一个直接前驱和一个直接后继。
第1章概论习题参考答案一、基础知识题1.简述下列概念数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。
【解答】数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。
数据元素是数据的基本单位。
在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。
数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种总体描述。
每一种计算机程序设计语言都定义有自己的数据类型。
“数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。
作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。
而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。
数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。
数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则依赖于存储结构。
数据结构在计算机中的表示称为物理结构,又称存储结构。
是逻辑结构在存储器中的映像,包括数据元素的表示和关系的表示。
逻辑结构与计算机无关。
算法是对特定问题求解步骤的一种描述,是指令的有限序列。
其中每一条指令表示一个或多个操作。
一个算法应该具有下列特性:有穷性、确定性、可行性、输入和输出。
2.数据的逻辑结构分哪几种,为什么说逻辑结构是数据组织的主要方面?【解答】数据的逻辑结构分为线性结构和非线性结构。
(也可以分为集合、线性结构、树形结构和图形即网状结构)。
逻辑结构是数据组织的某种“本质性”的东西:(1)逻辑结构与数据元素本身的形式、内容无关。
(2)逻辑结构与数据元素的相对位置无关。
(3)逻辑结构与所含数据元素的个数无关。
数据结构与算法练习题库(含答案)一、单选题(共80题,每题1分,共80分)1、对一棵二叉树的结点从 1 开始顺序编号。
要求每个结点的编号大于其左子树所有结点的编号、但小于右子树中所有结点的编号。
可采用▁▁▁▁▁ 实现编号。
A、中序遍历B、先序遍历C、层次遍历D、后序遍历正确答案:A2、设一段文本中包含4个对象{a,b,c,d},其出现次数相应为{4,2,5,1},则该段文本的哈夫曼编码比采用等长方式的编码节省了多少位数?A、5B、4C、2D、0正确答案:C3、两个有相同键值的元素具有不同的散列地址A、一定不会B、一定会C、可能会D、有万分之一的可能会正确答案:C4、将元素序列{18,23,11,20,2,7,27,33,42,15}按顺序插入一个初始为空的、大小为11的散列表中。
散列函数为:H(Key)=Key%11,采用线性探测法处理冲突。
问:当第一次发现有冲突时,散列表的装填因子大约是多少?A、0.73B、0.27C、0.64D、0.45正确答案:D5、对N个记录进行归并排序,归并趟数的数量级是:A、O(NlogN)B、O(logN)C、O(N)D、O(N2)正确答案:B6、下列说法不正确的是:A、图的遍历是从给定的源点出发每一个顶点仅被访问一次B、图的深度遍历不适用于有向图C、遍历的基本算法有两种:深度遍历和广度遍历D、图的深度遍历是一个递归过程正确答案:B7、二叉树的中序遍历也可以循环地完成。
给定循环中堆栈的操作序列如下(其中push为入栈,pop为出栈): push(1), push(2), push(3), pop(), push(4), pop(), pop(), push(5), pop(), pop(), push(6), pop()A、6是根结点B、2是4的父结点C、2和6是兄弟结点D、以上全不对正确答案:C8、设最小堆(小根堆)的层序遍历结果为{1, 3, 2, 5, 4, 7, 6}。
1、下面关于算法的说法错误的是()A、算法最终必须由计算机程序实现B、为解决某问题的算法同为该问题编写的程序含义是相同的C、算法的可行性是指指令不能有二义性D、以上几个都是错误的参考答案:D2、数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称为()A、存储结构B、逻辑结构C、链式存储结构D、顺序存储结构参考答案:C3、以下说法正确的是()(2分)A、数据元素是数据的最小单位B、数据项是数据的基本单位C、数据结构是带有结构的各数据项的集合D、数据结构是带有结构的数据元素的集合参考答案:D4、通常从正确性、易读性、健壮性、高效性等四个方面评价算法(包括程序)的质量。
以下解释错误的是()A、正确性算法应能正确地实现预定的功能(即处理要求)B、易读性算法应易于理解和阅读,以便于调试、修改和扩充C、健壮性当环境发生变化时,算法能适当地做出反应或进行处理,不会产生不需要的运行结果D、高效性即达到所需要的时间性能参考答案:C5、树形结构是数据元素之间存在一种()A、一对一关系B、多对多关系C、多对一关系D、一对多关系参考答案:D6、数据结构是指()A、数据元素的组织形式B、数据类型C、数据存储结构D、数据定义参考答案:A7、算法分析的目的是()A、找出数据结构的合理性3、研究算法中的输入和输出关系C、分析算法的效率以求改进D、分析算法的易懂性和文档性参考答案:C8、数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()A、低B、高C、相同D、以上都不正确参考答案:B9、算法的空间复杂度是指()A、执行算法程序所占的存储空间B、算法程序中的指令条数C、算法程序的长度D、算法执行过程中所需要的存储空间参考答案:D10、数据的存储结构是指()A、数据所占的存储空间量B、数据的逻辑结构在计算机中的表示C、数据在计算机中的顺序存储方式D、存数在外存中的数据参考答案:B11、线性表是()A、一个有限序列,可以为空B、一个有限序列,不能为空C、一个无限序列,可以为空D、一个无限序列,不能为空参考答案:A12、下列叙述正确的是()A、线性表是线性结构B、栈和队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构参考答案:A13、计算机内部数据处理的基本单位是()A、数据B、数据元素C、数据项D、数据库参考答案:B14、从逻辑上可以把数据结构分为()两大类A、动态结构、静态结构B、顺序结构、链式结构C、线性结构、非线性结构D、初等结构、构造型结构参考答案:C15、算法的时间复杂度取决于()A、问题的规模B、待处理数据的初态C、A 和B参考答案:C16、以下属于逻辑结构的是()(2分)A、顺序表B、哈希表C、有序表D、单链表参考答案:C17、下列数据结构中,()是非线性数据结构A、树B、字符串C、队D、栈参考答案:A18、设语句x++的时间是单位时间,则以下语句的时间复杂度为()for(i=1;i<=n;i++)for(j=|;j<=n;j++)x++;(2分)A、O(1)B、O(n2)C、O(n)D、O(n3)参考答案:B19、算法的计算量大小称为计算的()(2分)A、效率B、复杂性C、现实性D、难度参考答案:B20、数据结构只是研究数据的逻辑结构和物理结构,这种观点()A、正确B、错误C、前半句正确,后半句错误D、前半句错误,后半句正确参考答案:B21、计算机算法指的是(),它具有输入、输出、可行性、确定性和有穷性等五个特性。
算法与数据结构C语⾔版课后习题答案(机械⼯业出版社)第3,4章习题参考答案第3章栈和队列⼀、基础知识题3.1有五个数依次进栈:1,2,3,4,5。
在各种出栈的序列中,以3,4先出的序列有哪⼏个。
(3在4之前出栈)。
【解答】34215 ,34251,345213.2铁路进⾏列车调度时,常把站台设计成栈式结构,若进站的六辆列车顺序为:1,2,3,4,5,6,那么是否能够得到435612, 325641, 154623和135426的出站序列,如果不能,说明为什么不能;如果能,说明如何得到(即写出"进栈"或"出栈"的序列)。
【解答】输⼊序列为123456,不能得出435612和154623。
不能得到435612的理由是,输出序列最后两元素是12,前⾯4个元素(4356)得到后,栈中元素剩12,且2在栈顶,不可能让栈底元素1在栈顶元素2之前出栈。
不能得到154623的理由类似,当栈中元素只剩23,且3在栈顶,2不可能先于3出栈。
得到325641的过程如下:1 2 3顺序⼊栈,32出栈,得到部分输出序列32;然后45⼊栈,5出栈,部分输出序列变为325;接着6⼊栈并退栈,部分输出序列变为3256;最后41退栈,得最终结果325641。
得到135426的过程如下:1⼊栈并出栈,得到部分输出序列1;然后2和3⼊栈,3出栈,部分输出序列变为13;接着4和5⼊栈,5,4和2依次出栈,部分输出序列变为13542;最后6⼊栈并退栈,得最终结果135426。
3.3若⽤⼀个⼤⼩为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除⼀个元素,再加⼊两个元素后,rear和front的值分别为多少?【解答】2和43.4设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,⼀个元素出栈后即进队列Q,若6个元素出队的序列是e3,e5,e4,e6,e2,e1,则栈S的容量⾄少应该是多少?【解答】43.5循环队列的优点是什么,如何判断“空”和“满”。
数据结构与算法习题含参考答案一、单选题(共100题,每题1分,共100分)1、要为 Word 2010 格式的论文添加索引,如果索引项已经以表格形式保存在另一个 Word文档中,最快捷的操作方法是:A、在 Word 格式论文中,逐一标记索引项,然后插入索引B、直接将以表格形式保存在另一个 Word 文档中的索引项复制到 Word 格式论文中C、在 Word 格式论文中,使用自动插入索引功能,从另外保存 Word 索引项的文件中插D、在 Word 格式论文中,使用自动标记功能批量标记索引项,然后插入索引正确答案:D2、下面不属于计算机软件构成要素的是A、文档B、程序C、数据D、开发方法正确答案:D3、JAVA 属于:A、操作系统B、办公软件C、数据库系统D、计算机语言正确答案:D4、在 PowerPoint 演示文稿中,不可以使用的对象是:A、图片B、超链接C、视频D、书签第 6 组正确答案:D5、下列叙述中正确的是A、软件过程是软件开发过程和软件维护过程B、软件过程是软件开发过程C、软件过程是把输入转化为输出的一组彼此相关的资源和活动D、软件过程是软件维护过程正确答案:C6、在 Word 中,不能作为文本转换为表格的分隔符的是:A、@B、制表符C、段落标记D、##正确答案:D7、某企业为了建设一个可供客户在互联网上浏览的网站,需要申请一个:A、密码B、门牌号C、域名D、邮编正确答案:C8、面向对象方法中,将数据和操作置于对象的统一体中的实现方式是A、隐藏第 42 组B、抽象C、结合D、封装正确答案:D9、下面属于整数类 I 实例的是A、-919B、0.919C、919E+3D、919D-2正确答案:A10、定义课程的关系模式如下:Course (C#, Cn, Cr,prC1#, prC2#)(其属性分别为课程号、课程名、学分、先修课程号 1和先修课程号 2),并且不同课程可以同名,则该关系最高是A、BCNFB、2NFC、1NFD、3NF正确答案:A11、循环队列的存储空间为 Q(1:100),初始状态为 front=rear=100。
《算法与数据结构》第1-6章课堂测验(双号)一、选择题1、已知一个栈的进栈序列是1,2,3,…,n,其输出序列是p1,p2,…,pn,若p1=n,则pi的值。
(C)(A) i (B) n-i(C) n-i+1 (D) 不确定2、设n个元素进栈序列是1,2,3,…,n,其输出序列是p1,p2,…,pn,若p1=3,则p2的值。
(C)(A) 一定是2 (B) 一定是1(C) 不可能是1 (D) 以上都不对3、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是(B )D.不确定4、在下述结论中,正确的是(D)①只有一个结点的二叉树的度为0;②二叉树的度为2;③二叉树的左右子树可任意交换;④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A.①②③B.②③④C.②④D.①④5、一棵树高为K的完全二叉树至少有(C)个结点。
(A)–1 +1二、简答题1简述下列术语:线性表,顺序表,链表。
答:线性表是具有相同特性的数据元素的一个有限序列。
用顺序存储方法存储的线性表简称顺序表。
用链式存储方法存储的线性表简称链表。
(这组存储单元可以使连续的,也可以是不连续的)2何时选用顺序表,何时选用链表作为线性表的存储结构合适?各自的主要优缺点是什么?答:顺序表的主要优点:没用使用指针,不用花费附加开销线性表元素的读访问非常简洁便利链表的主要优点:无需事先了解线性表的长度能够适应经常插入删除内部元素的情况允许线性表的长度有很大变化不要使用顺序表的场合:经常插入删除时,不宜使用顺序表线性表的最大长度也是一个重要因素不要使用链表的场合:当读操作比插入删除操作频率大时,不应选择链表当指针的存储开销,和整个结点内容所占空间相比其比例较大时,应该慎重选择(不需要经常大量的修改表或需要随机存取的情况下可以选用顺序表;。
相反需要经常大量的修改表,但不是频繁的随机存取的情况下可选用链式表)3链表所表示的元素是否有序?如有序,则有序性体现于何处?链表所表示的元素是否一定要在物理上是相邻的?有序表的有序性又如何理解?答:有序。
《算法与数据结构》习题1第一部分一、单项选择题1.()二叉排序树可以得到一个从小到大的有序序列。
A、先序遍历B、中序遍历C、后序遍历D、层次遍历2.设按照从上到下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为()。
A、2i+1B、2iC、i/2D、2i-13.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为()。
A、q=p->next;p->data=q->data;p->next=q->next;free(q);B、q=p->next;q->data=p->data;p->next=q->next;free(q);C、q=p->next;p->next=q->next;free(q);D、q=p->next;p->data=q->data;free(q);4.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为()。
A、BADCB、BCDAC、CDABD、CBDA5.设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有()条有向边。
A、nB、n-1C、mD、m-16.设二叉排序树中有n个结点,则在二叉排序树的平均平均查找长度为()。
A、O(1)B、O(log2n)C、O(nlog2n)D、O(n2)7.设有序表中有1000个元素,则用二分查找查找元素X最多需要比较()次。
A、25B、10C、7D、1二、填空题1.设指针变量p指向双向链表中的结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为______=p;s->right=p->right;______=s;p->right->left=s;(设结点中的两个指针域分别为left和right)。
2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为______。
3.设一棵三叉树中有50个度数为0的结点,21个度数为2的结点,则该二叉树中度数为3的结点数有______个。
4.后缀算式9 2 3 + - 10 2 / -的值为______。
中缀算式(3+4X)-2Y/3对应的后缀算式为______。
5.设初始记录关键字序列为(K1,K2,…,Kn),则用筛选法思想建堆必须从第______个元素开始进行筛选。
6.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点分别有______个和______个。
7.______遍历二叉排序树中的结点可以得到一个递增的关键字序列(填先序、中序或后序)。
8.完全二叉树中第5层上最少有______个结点,最多有______个结点。
三、计算题1.设散列表的地址范围是[0..9],散列函数为H(key)=(key2+2) MOD 9,并采用链表处理冲突,请画出元素2、4、5、3、6、7、8、9依次插入散列表的存储结构。
2.请下图所示的森林:1)求树(a)的先根序列和后根序列;2)求森林先序序列和中序序列;3)将此森林转换为相应的二叉树;3.已知二叉树的前序遍历序列是AEFBGCDHIKJ,中序遍历序列是EFAGBCHKIJD,画出此二叉树,并画出它的后序线索二叉树。
四、算法填空下列算法实现在顺序散列表中查找值为k的关键字,请在下划线处填上正确的语句: struct record{int key;int others;};int hashsqsearch(struct record hashtable[ ],int k){int i,j;j=i=k % p;while(hashtable[j].key!=k&&hashtable[j].flag!=0){j=(______)%m;if(i==j) return(-1);}if(______) return(j);else return(-1);}五、编写算法1、设计计算二叉树中所有结点值之和的算法。
2、设计将所有奇数移到所有偶数之前的算法。
第一部分参考答案二、填空题1.s->left=p,p->right2.O(n)3.144.-1 34X*+2Y*3/-5.n/26. e 2e7.中序8. 1 16三、计算题1.H(4)=H(5)=0,H(3)=H(6)=H(9)=2,H(8)=3,H(2)=H(7)=62.1)ABCDEF;BDEFCA;2)ABCDEFGHIJK;BDEFCAIJKHG3)森林转换为相应的二叉树:3.线索二叉树为:四、算法填空j+1,hashtable[j].key==k五、编写算法1、void sum(bitree *bt,int &s){if(bt!=0){s=s+bt->data;sum(bt->lchild,s);sum(bt->rchild,s);}}2、void quickpass(int r[], int s, int t){int i=s,j=t,x=r[s];while(i<j){while(i<j && r[j]%2==0) j=j-1;if(i<j){r[i]=r[j];i=i+1;}while(i<j && r[i]%2==1) i=i+1;if (i<j){r[j]=r[i];j=j-1;}}r[i]=x;}第二部分一、填空题1.通常从四个方面评价算法的质量:______、______、______和______。
2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为______。
3.数据结构从逻辑上划分为三种基本类型:______、______和______。
4.后缀算式9 2 3 + - 10 2 / -的值为______。
中缀算式(3+4X)-2Y/3对应的后缀算式为______。
5.若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指针。
在这种存储结构中,n个结点的二叉树共有______个指针域,其中有______个指针域是存放了地址,有______个指针是空指针。
6.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点分别有______个和______个。
7.AOV网是一种______的图。
8.完全二叉树中第5层上最少有______个结点,最多有______个结点。
9.假定一个线性表为(12,23,74,55,63,40),若按Key % 4条件进行划分,使得同一余数的元素成为一个子表,则得到的四个子表分别为______、______、______和______。
二、单项选择题1.栈和队列的共同特点是()。
A、只允许在端点处插入和删除元素B、都是先进后出C、都是先进先出D、没有共同点2.用链接方式存储的队列,在进行插入运算时()。
A、仅修改头指针B、头、尾指针都要修改C、仅修改尾指针D、头、尾指针可能都要修改3.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为()。
A、R-FB、F-RC、(R-F+M)%MD、(F-R+M)%M4.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为()。
A、BADCB、BCDAC、CDABD、CBDA5.设一组初始关键字记录关键字为(20,15,14,18,21,36,40,10),则以20为基准记录的一趟快速排序结束后的结果为()。
A、10,15,14,18,20,36,40,21B、10,15,14,18,20,40,36,21C、10,15,14,20,18,40,36,2lD、15,10,14,18,20,36,40,216.设二叉排序树中有n个结点,则在二叉排序树的平均平均查找长度为()。
A、O(1)B、O(log2n)C、O(nlog2n)D、O(n2)7.设用链表作为栈的存储结构则退栈操作()。
A、必须判别栈是否为满B、必须判别栈是否为空C、O(1og2n)D、O(n2)三、计算题1.在如下数组A中链接存储了一个线性表,表头指针为A[0].next,试写出该线性表。
2.请画出下图的邻接矩阵和邻接表。
3.已知一个图的顶点集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)2 0,(5,6)18,(6,7)25};用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。
四、算法填空二叉搜索树的查找-递归算法:bool Find(BTreeNode* BST,ElemType& item){if(BST==NULL)return false;//查找失败else{if(item==BST->data){item=BST->data;//查找成功return ______;}else if(item<BST->data)return Find(______,item);else return Find(______,item);}//if}五、编写算法1、统计出单链表HL中结点的值等于给定值X的结点数。
int CountX(LNode* HL,ElemType x)2、设计两个有序单链表的合并排序算法第二部分参考答案一、填空1.正确性易读性强壮性高效率2.O(n)3.线性结构,树型结构,图型结构4.-1 34X*+2Y*3/-5.2n n-1 n+16. e 2e7.有向无回路8. 1 169.(12,40)()(74)(23,55,63)三、计算题1.线性表为:(78,50,40,60,34,90)2.邻接矩阵:邻接表:3.用克鲁斯卡尔算法得到的最小生成树为:(1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)20四、算法填空true,BST->left,BST->right五、编写算法1、int CountX(LNode* HL,ElemType x){int i=0;LNode* p=HL;//i为计数器while(p!=NULL){if (P->data==x) i++;p=p->next;}//while,出循环时i中的值即为x结点个数return i;}//CountX2、void mergelklist(lklist *ha,lklist *hb,lklist *&hc){lklist *s=hc=0;while(ha!=0 && hb!=0)if(ha->data<hb->data){if(s==0) hc=s=ha;else{s->next=ha;s=ha;};ha=ha->next;}else{if(s==0) hc=s=hb;else{s->next=hb;s=hb;};hb=hb->next;}if(ha==0) s->next=hb;else s->next=ha;}。