计算机数据结构复习题2
计算机学科专业基础综合数据结构-图(二)_真题-无答案

计算机学科专业基础综合数据结构-图(二)(总分100,考试时间90分钟)一、单项选择题(下列每题给出的4个选项中,只有一个最符合试题要求)1. 具有6个顶点的无向图至少应有______条边才能确保是一个连通图。
A.5 B.6 C.7 D.82. 设G是一个非连通无向图,有15条边,则该图至少有______个顶点。
A.5 B.6 C.7 D.83. 下列关于无向连通图特性的叙述中,正确的是______。
①所有顶点的度之和为偶数②边数大于顶点个数减1③至少有一个顶点的度为1A.只有① B.只有② C.①和② D.①和③4. 对于具有n(n>1)个顶点的强连通图,其有向边的条数至少是______。
A.n+1B.nC.n-1D.n-25. 下列有关图的说法中正确的是______。
A.在图结构中,顶点不可以没有任何前驱和后继 B.具有n个顶点的无向图最多有n(n-1)条边,最少有n-1条边 C.在无向图中,边的条数是结点度数之和 D.在有向图中,各顶点的入度之和等于各顶点的出度之和6. 对于一个具有n个顶点和e条边的无向图,若采用邻接矩阵表示,则该矩阵大小是______,矩阵中非零元素的个数是2e。
A.n B.(n-1)2 C.n-1 D.n27. 无向图的邻接矩阵是一个______。
A.对称矩阵 B.零矩阵 C.上三角矩阵 D.对角矩阵8. 从邻接矩阵可知,该图共有______个顶点。
如果是有向图,该图共有4条有向边;如果是无向图,则共有2条边。
A.9 B.3 C.6 D.1 E.5 F.4 G.2 H.09. 下列说法中正确的是______。
A.一个图的邻接矩阵表示是唯一的,邻接表表示也唯一 B.一个图的邻接矩阵表示是唯一的,邻接表表示不唯一 C.一个图的邻接矩阵表示不唯一,邻接表表示唯一 D.一个图的邻接矩阵表示不唯一,邻接表表示也不唯一10. 用邻接表存储图所用的空间大小______。
A.与图的顶点数和边数都有关 B.只与图的边数有关 C.只与图的顶点数有关 D.与边数的二次方有关11. 采用邻接表存储的图的深度优先搜索算法类似于二叉树的______,广度优先搜索算法类似于二叉树的层次序遍历。
大二数据结构复习-第1-2章(带答案)

《数据结构》第1-2章练习题一、选择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、若线性表最常用的操作是存取第i个元素及其前驱的值,则采用()存储方式节省时间A、单链表B、双向链表C、单循环链表D、顺序表顺序表可以随机存取8、设指针P指向双链表的某一结点,则双链表结构的对称性可用()式来刻画A、p->prior->next->==p->next->nextB、p->prior->prior->==p->next->priorC、p->prior->next->==p->next->priorD、p->next->next==p->prior->prior9、以下说错误的是()A、对循环来说,从表中任一结点出发都能通过前后操作而扫描整个循环链表B、对单链表来说,只有从头结点开始才能扫描表中全部结点C、双链表的特点是找结点的前趋和后继都很容易D、对双链表来说,结点*P的存储位置既存放在其前趋结点的后继指针域中,也存放在它的后继结点的前趋指针域中。
数据结构复习_2

7、抽象数据类型的概念 由用户定义,用以表示应用问题的数据模型,是将数据结构作为一个软件构建的实现, 由基本的数据类型组成, 并包括一组相关的服务(或称操作) 抽象数据类型的的特征是使用与实现相分离,信息隐蔽和数据封装, 8、类的特征 信息隐蔽和数据封装,使用与实现相分离。 9、自然数的抽象数据类型定义 ADT NaturalNumber is objects: 一个整数的有序子集合,它开始于 0, 结束于机器能表示的最大整数(MaxInt)。 Function: 对于所有的 x, y NaturalNumber; False, True Boolean, +、-、<、==、=等都是可用的服务。 Zero( ) : NaturalNumber 返回自然数 0
4、数据结构涉及的三个方面: 数据的运算,即对数据元素施加的操作。 数据的逻辑结构 数据的存储结构 是指数据应该如何在计算机中存放, 是数据逻辑结构的物理存储方式, 是属于具体实现 的视图,是面向计算机的。 四种基本的存储方法: 顺序存储表示:该方法把逻辑上相邻的元素存放到物理位置上相邻的存储单元中; 链接存储表示:该方法不要求逻辑上相邻的元素在物理位置上也相邻; 索引存储表示:该方法在存储元素信息的同时,还建立附加的索引表。索引表中每一项 称 为索引项,索引项的一般形式是:(关键码,地址); 散列存储表示:根据结点的关键码通过一个函数计算直接得到该结点的存储地址。 5、数据类型 数据类型是一组性质相同的值的集合, 以及定义于这个值集合上的一组操作的总称. 6、线性表数据类型的两种表示方式 基于数组的顺序表示和基于链表的链接表示
第五章树 一、树的定义和术语 1.自由树 一棵自由树 Tf 可定义为一个二元组 Tf = (V, E) 其中 V = {v1, ..., vn} 是由 n (n>0) 个元素组成的有限非空集合,称为顶点集合。 E = {(vi, vj) | vi, vj V, 1≤i, j≤n} 是 n-1 个序对的集合,称为边集合,E 中的元素 (vi, vj)称 为边或分支。
《数据结构》1至5章期末复习题

第一章一、单项选择题1. 数据结构是指()。
A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。
A.存储结构B.逻辑结构C.链式存储结构D.顺序存储结构3. 树形结构是数据元素之间存在一种()。
A.一对一关系B.多对多关系C.多对一关系D.一对多关系4. 设语句x++的时间是单位时间,则以下语句的时间复杂度为()。
for(i=1; i<=n; i++)for(j=i; j<=n; j++)x++;A.O(1)B.O( )C.O(n)D.O( )5. 算法分析的目的是(1),算法分析的两个主要方面是(2)。
A.找出数据结构的合理性B.研究算法中的输入和输出关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性(2) A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性6. 计算机算法指的是(1),它具备输入,输出和(2)等五个特性。
(1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法(2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性C.确定性,有穷性和稳定性D.易读性,稳定性和安全性7. 数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。
A.低 B.高 C.相同 D.不好说8. 数据结构作为一门独立的课程出现是在()年。
A.1946B.1953C.1964D.19689. 数据结构只是研究数据的逻辑结构和物理结构,这种观点()。
A.正确B.错误C.前半句对,后半句错D.前半句错,后半句对10. 计算机内部数据处理的基本单位是()。
A.数据B.数据元素C.数据项D.数据库二、填空题1. 数据结构按逻辑结构可分为两大类,分别是______________和_________________。
数据结构复习题 (2)

一.判断题(下列各题,正确的请在前面的括号内打√;错误的打×)第1章(√)(1)数据的逻辑结构与数据元素本身的内容和形式无关。
(√)(2)一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。
(×)(3)数据元素是数据的最小单位。
(×)(4)数据项是数据的基本单位。
(×)(5)数据的逻辑结构和数据的存储结构是相同的。
(√)(6)数据的逻辑结构是各数据元素之间的逻辑关系,是用户按使用需要而建立的。
(√)(7)数据的物理结构是指数据在计算机内实际的存储形式。
(√)(8)从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。
(√)(9)数据的存储结构是数据的逻辑结构的存储映像。
(√)(10)算法是对解题方法和步骤的描述。
第2章(×)(1)链表的物理存储结构具有同链表一样的顺序。
(×)(2)链表的每个结点都恰好包含一个指针域。
(√)(3)线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数据对象。
(×)(4)链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。
(×)(5)顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
(√)(6)数组元素的存储位置是下标的线性函数。
(√)(7)在单链表中,元素的存储位置用指针联系,所以可以从头结点开始查找任何一个元素。
(×)(8)顺序存储线性表的插入和删除操作不需要付出很大的代价,因为平均每次移动仅一半的元素。
(×)(9)顺序存储方式的优点是存储密度大,插入、删除效率高。
(×)(10)在单链表中,要取得某个元素,只要知道该元素的指针即可,因此单链表是随机存取的存储结构。
第3章(√)(1)大多数排序算法都有比较关键字大小和改变指向记录的指针或移动记录本身两种基本操作。
计算机数据结构习题2附答案.

第六章图1、填空题一个有 n 个结点的无向图中,所有顶点的度数之和等于所有边数之和的 _2__倍。
一个有 n 个结点的强连通图,最多有 _n(n-1_/2__条边,最少有 ___n-1_ 条边。
在一个无向图中,所有顶点的度数之和等于所有边数之和的 __2____倍。
2、判断题1无向图的邻接矩阵一定是对称矩阵。
(√2有向图的邻接矩阵一定是对称矩阵。
(×3图的深度优先搜索路径是唯一的。
(×4图的广度优先搜索路径不是唯一的。
(√5一个图可能存在多棵最小生成树。
(√6无向图的邻接矩阵一定是对称的,有向图的邻接矩阵一定是不对称的。
(√7图的关键路径是指从源点到汇点的最短路径。
(×8用邻接矩阵法存储图,占用的存储空间数量只与图中边数有关,与结点个数无关。
(×9对一个图分别进行深度优先搜索和广度优先搜索,得到的结点序列一定是相同的。
(×10图的关键路径是指从源点到汇点的最长路径。
(√3、选择题1一个无向连通图的生成树是含有该连通图的全部顶点的 __A__。
A 、极小连通子图B 、极小子图C 、极大连通子图D 、极大子图 2具有 e 条边的有向图,它的邻接表中有 _D__个弧结点。
A 、 e-1B 、 2eC 、 2(e-1D 、 e3如果某图的邻接矩阵是对角线元素均为零的上三角矩阵,则此图是 __D__A 、无向图B 、完全图C 、强连通图D 、有向无环图4顶点个数为 n 的有向图最多有 __D_条弧。
A 、 n-1B 、 n(n-1/2C 、 n(n+1/2D 、 n(n-1应用题:1. 请给出图 1的所有最小生成树。
(10分图 1共两棵。
第一棵为:(5分错一条边扣 1分。
第二棵为:(5分错一条边扣 1分。
2. 请给出图 2的所有拓扑排序序列。
(16答案如下:仅有两个第一个:abcdefgh (错一个字符扣 1分第二个:abcdegfh (错一个字符扣 1分3、对于有向无环图(如图 3,写出它的所有不同的拓扑有序序列。
数据结构复习题及标准答案
数据结构复习题及标准答案————————————————————————————————作者:————————————————————————————————日期:一、选择题。
(每小题2分,共40分)(1) 计算机识别.存储和加工处理的对象被统称为____A____。
A.数据B.数据元素C.数据结构D.数据类型(2) 数据结构通常是研究数据的____ A _____及它们之间的联系。
A.存储和逻辑结构B.存储和抽象C.理想和抽象D.理想与逻辑(3) 不是数据的逻辑结构是____ A ______。
A.散列结构B.线性结构C.树结构D.图结构(4) 数据结构被形式地定义为<D,R>,其中D是____ B _____的有限集,R是____ C _____的有限集。
A.算法B.数据元素C.数据操作D.逻辑结构(5) 组成数据的基本单位是____ A ______。
A.数据项B.数据类型C.数据元素D.数据变量(6) 设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是____ A ______。
A.线性结构B.树型结构C.图型结构D.集合(7) 数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为___ C ____。
A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构(8) 在数据结构的讨论中把数据结构从逻辑上分为___ A ____。
A.内部结构与外部结构B.静态结构与动态结构C.线性结构与非线性结构D.紧凑结构与非紧凑结构(9) 对一个算法的评价,不包括如下____ B _____方面的内容。
A.健壮性和可读性B.并行性C.正确性D.时空复杂度(10) 算法分析的两个方面是__ A ____。
A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性(11) 线性表是具有n个___ C _____的有限序列(n≠0)。
计算机专业基础综合(数据结构)模拟试卷2
计算机专业基础综合(数据结构)模拟试卷2(总分:70.00,做题时间:90分钟)一、单项选择题(总题数:21,分数:42.00)1.单项选择题1-40小题。
下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
(分数:2.00)__________________________________________________________________________________________ 解析:2.栈和队列的主要区别在于( )。
(分数:2.00)A.它们的逻辑结构不一样B.它们的存储结构不一样C.所包含的运算不一样D.插入和删除运算的限定不一样√解析:解析:栈和队列的逻辑结构都是线性的,都有顺序存储和链式存储,有可能包含的运算不一样,但不是其主要区别。
任何数据结构在针对具体问题时所包含的运算都可能不同。
所以正确答案是D。
3.若循环队列以数组Q[0..m-1]作为其存储结构,变量rear。
表示循环队列中的队尾元素的实际位置,其移动按rear=(rear+1)MOD m进行,变量length表示当前循环队列中的元素个数,则循环队列的队首元素的实际位置是( )。
(分数:2.00)A.rear-lengthB.(rear—length+m)MOD mC.(rear—length+1+m)MOD m √D.m-length解析:解析:按照循环队列的定义,因为元素移动按照rect=(rear+1)MOD m进行,则当数组Q[m—1]存放了元素之后,下一个入队的元素将存放到Q[0]中,因此队列的首元素的实际位置是(rear—length+1+m)MOD m。
4.一个以向量V[n]存储的栈,其初始栈顶指针top为n+1,则对于x,其正确的进栈操作是( )。
(分数:2.00)A.top=top+1;V[top]=xB.V[top]=x;top=top+1C.top=top-1;V[top]=x √D.V[top]=x;top=top-1解析:解析:此题考查的知识点是入栈的具体操作。
数据结构考试题库(含参考答案) (2)
第1章绪论一、选择题1. 算法的计算量的大小称为计算的()。
【北京邮电大学2000 二、3 (20/8分)】A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于()【中科院计算所1998 二、1 (2分)】A.问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(1),它必须具备(2)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性【南京理工大学1999 一、1(2分)【武汉交通科技大学1996 一、1(4分)】4.一个算法应该是()。
【中山大学1998 二、1(2分)】A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C.5. 下面关于算法说法错误的是()【南京理工大学2000 一、1(1.5分)】A.算法最终必须由计算机程序实现B. 为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是()【南京理工大学2000 一、2 (1.5分)】(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。
【武汉交通科技大学1996 一、4(2分)】A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。
【北方交通大学2000 二、1(2分)】A.循环队列 B. 链表 C. 哈希表 D. 栈9.以下数据结构中,哪一个是线性结构()?【北方交通大学2001 一、1(2分)】A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串10.以下那一个术语与数据的存储结构无关?()【北方交通大学2001 一、2(2分)】A.栈 B. 哈希表 C. 线索树 D. 双向链表11.在下面的程序段中,对x的赋值语句的频度为()【北京工商大学2001 一、10(3分)】FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A.O(2n) B.O(n) C.O(n2) D.O (log2n)12.程序段FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与A[j+1]对换;其中n为正整数,则最后一行的语句频度在最坏情况下是()A. O(n)B. O(nlogn)C. O(n3)D. O(n2) 【南京理工大学1998一、1(2分)】13.以下哪个数据结构不是多型数据类型()【中山大学1999 一、3(1分)】A.栈B.广义表C.有向图D.字符串14.以下数据结构中,()是非线性数据结构【中山大学1999 一、4】A.树B.字符串C.队D.栈15. 下列数据中,()是非线性数据结构。
复习
一、单项选择题1.在数据结构中,从逻辑上可以把数据结构分为()两类。
A.动态结构和静态结构B.紧凑结构和非紧凑结C.线性结构和非线性结构D.内部结构和外部结构C2.数据的逻辑结构是()关系的整体。
A.数据元素之间的逻辑B.数据项之间的逻辑C.数据类型之间D.存储结构之间A3.在计算机的存储器中表示数据时,物理地址和逻辑地址的相对位置相同并且是连续的,称之为()。
A.逻辑结构B.顺序存储结构C.链式存储结构D.以上都对B4.数据运算的执行()。
A.效率与采用何种存储结构有关B.是根据存储结构来定义的C.有算术运算和关系运算两大类D.必须用程序设计语言来描述A5.数据结构在计算机内存中的表示是指()。
A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系A6.数据采用链式存储结构存储,要求()。
A.每个节点占用一片连续的存储区域B.所有节点占用一片连续的存储区域C.节点的最后一个数据域是指针类型D.每个节点有多少个后继,就设多少个指针域A7.以下()不是算法的基本特性。
A.可行性B.长度有限C.在确定的时间内完成D.确定性B8.在计算机中算法指的是解决某一问题的有限运算序列,它必须具备输入、输出、()。
A.可行性、可移植性和可扩展性B.可行性、有穷性和确定性C.确定性、有穷性和稳定性D.易读性、稳定性和确定性9.算法的时间复杂度与()有关。
A.问题规模B.计算机硬件性能C.编译程序质量D.程序设计语言A10.算法分析的主要任务之一是分析()。
A.算法是否具有较好的可读性B.算法中是否存在语法错误C.算法的功能是否符合设计要求D.算法的执行时间和问题规模之间的关系D11.算法分析的目的是()。
A.找出数据结构的合理性B.研究算法中输入和输出关系C.分析算法的效率以求改进D.分析算法的易读性和文档性C12.在一个长度为n的顺序表中于第i个元素(1<=i<=n+1)之前插入一个新元素,需要向后移动()个元素。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1解、采用遍历方式判断无向图G是否连通。若用深 度优先遍历方法,先给visited[]数组置初值0, 然后从0顶点开始遍历该图。在一次遍历后,若所 有顶点i的visited[i]均为1,则该图是连通的,否 则不连通。
1算法如下: int connect(AGraph *G) { int i,flag=1; for (i=0;i<G->n;i++) visited[i]=0; DFS(G,0); for (i=0;i<G->n;i++) if (visited[i]==0) flag=0; break; } return flag; }
D.(n-1)(m/2 -1)+1 解:根结点至少有一个关键字,其他n-1 个结点至少有(m/2 -1)个关键字,总共包 含.(n-1)(m/2 -1)+1
B. n D.(n-1)(m/2 -1)+1
三、算法设计题
1.假设图G采用邻接表存储,试设计一个算法,判断 无向图G是否连通。若连通则返回1,否则返回0.
5.树形如下:
A
B
C
G
H
D
E
F
I
L
J
K
先根遍历次序:ABCDEFGHIJKL
6.(1) 什么是递归程序? (2) 递归程序的优、缺点是什么? (3) 递归程序在执行时,应借助于什么来 完成? (4) 递归程序的入口语句、出口语句一般 用什么语句实现?
答案:
6.(1)一个函数在结束本函数之前,直接或
}
3.有一种简单的排序算法,叫做计数排序。这种排 序算法对一个待排序的表(用数组表示)进行排序, 并将排序结果存放到另一个新的表中。必须注意的 是,表中所有待排序的关键字互不相同,计数排序算 法针对表中的每个记录,扫描待排序的表一趟,统计 表中有多少个记录的关键字比该记录的关键字小。 假设对某一个记录,统计出数值为c,那么这个记录 在新的有序表中的合适的存放位置即为c。 (1)给出适用于计数排序的数据表定义。 (2)编写实现计数排序的算法。 (3)对于有n个记录的表,比较次数是多少? (4)与直接选择排序相比,这种方法是否更好?为什么?
算法如下:
2.void DFS2(AGraph *G, int v,int &vn,int &en) {//深度优先遍历图G,并求出遍历过的顶点数vn和边 数en ArcNode *p; visited[v]=1; vn++; p=G->adjlist[v].firstarc; while(p!=NULL) { en++; if(visited[p->adjvex]==0) DFS2(G,P->adjvex,vn,en) p=p->nextarc; } }
(3) 对于有n个记录的表,关键字比较的次数是n2. (4)直接选择排序比这种计数排序好,因为直接选择 排序的比较次数为n*(n-1)/2,且可在原地进行排 序(稳定排序),而计数排序为不稳定排序,需要 辅助空间多,为O(n).
4.试编写一个非递归算法,实现求以二叉链表存储 的二叉树中q结点的祖先。 4.解析:采用后序遍历二叉树的非递归算法,当访 问q结点时,结点栈中所有栈元素均为q的祖先。 # define MAX 1000 void Ancestor(BTTree* T,BTNode* q ) {BTNode* s[MAX]; BTNode* p=T; int b[MAX]; int top=-1;
B. 29
4. 如果一棵完全二叉树共有26个结点,则必定有 ( )个结点的度为1。
A.0 B .1 C .3D.13Fra bibliotekB .1
5 利用栈对表达式12+34+*求值,求值过程所需 栈的最大深度是( )。
A.1
B.2
C.3
D.4
C. 3
6.一棵BST树共7个结点,值分别是1,2,3,4, 5,6,7,形态为满二叉树,( )不是插入序 列。
DFS(G,p->adjvex); /*对v的尚未访问的邻接顶 点递归调用DFS*/ p=p->nextarc;
} }
2.假设图G采用邻接表存储,试设计一个算法,判断 无向图G是否是一棵树。若连通则返回1,否则返 回0. 2解、一个无向图G是一棵树的条件是:G必须是无回 路的连通图或者是n-1条边的连通图。本算法采用 后者作为判断条件,通过深度优先遍历图G,求出 遍历过的顶点数vn和边数ve,若vn=G->n成立且 en=2(G->n-1)成立,则G为一棵树。
do{ while(p) { s[++top]=p; b[top]=0; p=p->lchild; } if(top > -1 && b[top]==1) { p=s[top]; if(p==q) { printf("q结点的祖先是:\n"); for(int i=0;i<=top; i++) printf("%c",s[i]->data); return; }
4.给定关键码序列 (26,25,20,33,21,24,45,204,42,38,29,31), 要用散列法进行存储,规定负载因子α=0.6。 请给出除余法的散列函数。 4解答:表长m=12/0.6=20 H(key) =key MOD 19。
5. 已知一颗树的后根遍历次序和节点次数序 列如下,请画出这棵树,并给出其先根遍 历次序。 后根遍历次序:B D E F C G J K I L H A 节点次数序列:0 0 0 0 3 0 0 0 2 0 2 4
– 图的深度优先搜索 void DFS(Graph *G,int v ) /*从第v个顶点出 发递归地深度优先遍历图G*/ { ArcNode *p; visited[v]=1; Visit(v); /*访问第v个顶点*/ p=G->adjlist[v].firstarc; while(p!=NULL) { if (!visited[p->adjvex]==0)
间接调用函数自身,称为递归。例如, 函数f在执行中,又调用函数f自身,这 称为直接递归;若函数f在执行中,调用 函数g,而g在执行中,又调用函数f,这 称为间接递归。在实际应用中,多为直 接递归,也常简称为递归。
答案:
6. (2)递归程序的优点是程序结构简单、清
晰,易证明其正确性。缺点是执行中占 内存空间较多,运行效率低。
3 解: (1)typedef struct { ElemType data; KeyType key; }listtype;
3 (2)解: 算法如下 void countsort(listtype a[],listtype b[],int n) {int i,j,count; for(i=0;i<n;i++) { count=0; for(j=0;j<n;j++) if(a[j].key<a[i].key) count++; b[count]=a[i]; } } [例] 9,7,56,42,6,3 3,6,7,9,42,56
答案:
6. (3)递归程序执行中需借助栈这种数据结
构来实现。
答案:
6. (4)递归程序的入口语句和出口语句一般
用条件判断语句来实现。递归程序由基本 项和归纳项组成。基本项是递归程序出口, 即不再递归即可求出结果的部分;归纳项 是将原来问题化成简单的且与原来形式一 样的问题,即向着“基本项”发展,最终 “到达”基本项。
3解答: (1) 顺序存储结构如下图所示:
1 2 3 0 4 5 0 0 0 6 7 0 8 0 0
(2)先序遍历序列:12467358
中序遍历序列:26471583 后序遍历序列:67428531 (3)该二叉树的二叉链表存储结构示意图如下图:
3解答: 后序遍历序列:67428531 (4)该二叉树的后序线索二叉树如下图:
A.dacb
C.dbca
B.cadb
D.以上序列都不能得到。
B.cadb
11 设有10阶矩阵A,其对角线以上的元素 aij(1≤j ≤ 10, 1< i<j)均取值为-3,其他矩阵 元素为正整数,现将矩阵A压缩存储放在 一维数组F[m]中,则m为( )。 A.45 B.46 C.55 D.56
D.56
A.4 2 6 1 3 5 7 C.4 2 1 3 5 6 7
B.4 2 3 1 6 7 5 D.4 6 5 7 2 1 3
C. 4 2 1 3 5 6 7
7、设图G是一个非连通无向图,共有28条边, 则该图至少有( )个顶点。 A.12 B. 8 C. 9 D.11
C. 9
8、一个具有1025个结点的二叉树的高h为 ( ). A.11 C.11至1025之间 B.10 D.10至1024之间
15 若数据元素序列11,12,13,7,8,9,23,4,5是采 用下列排序方法之一得到的第二趟排序后的结 果,则该排序算法只能是( )。
A.起泡排序 C.选择排序 B.插入顺序 B.插入顺序 D.二路归并排序
16.含有n个非叶子结点m阶B-树中至少包含( ) 个关键字。
A.n(m-1) C.n(m/2 -1)
一、简答题 1. 下图所示的高度平衡二叉树(AVL树)中,依次插 入关键词为 6 和 10 的两个结点,请分别画出依次插入 后的AVL树。 9 3 2 8 20
1. 答案:
9 3 2 6 8 20 3 8
9
6 20
2
8 3 2 6 10 9 3 20 2 6 9 8 10 20
2、满足下列条件的二叉树: (1)若先序序列与后序序列相同,则或为空树, 或为只有根结点的二叉树。 (2)若中序序列与后序序列相同,则或为空树, 或为任一结点至多只有左子树的二叉树。 (3)若先序序列与中序序列相同,则或为空树, 或为任一结点至多只有右子树的二叉树。 (4)若中序序列与层次遍历序列相同,则或为空 树,或为任一结点至多只有右子树的二叉 树。