数据结构复习思考题
数据结构复习题答案
数据结构复习题答案1. 什么是数据结构?数据结构是计算机存储、组织数据的方式。
它包括数据的逻辑结构和物理结构。
2. 线性表有哪些基本操作?线性表的基本操作包括插入、删除、查找、排序等。
3. 栈和队列的区别是什么?栈是一种后进先出(LIFO)的数据结构,而队列是一种先进先出(FIFO)的数据结构。
4. 什么是二叉树?二叉树是每个节点最多有两个子节点的树结构。
5. 什么是图?图是由顶点(或节点)和边(或弧)组成的数据结构。
6. 什么是哈希表?哈希表是一种通过哈希函数将键映射到表中一个位置来访问记录的数据结构。
7. 什么是递归?递归是一种在函数中调用自身来解决问题的方法。
8. 什么是排序算法?排序算法是对数据进行排序的算法,常见的有冒泡排序、选择排序、插入排序、快速排序等。
9. 什么是动态规划?动态规划是一种通过将复杂问题分解为更简单的子问题来求解的方法。
10. 什么是贪心算法?贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。
11. 什么是分治算法?分治算法是一种将复杂问题分解成若干个规模较小但结构上相似的问题,递归解决这些子问题,然后合并结果来解决原问题的方法。
12. 什么是深度优先搜索和广度优先搜索?深度优先搜索(DFS)是一种搜索算法,它沿着树的深度遍历树的节点,直到所有节点都被访问。
广度优先搜索(BFS)是一种层级搜索算法,它从根节点开始,并逐层遍历树的所有节点。
13. 什么是最小生成树?最小生成树是图论中的一个重要概念,指的是一个无向连通图的一棵边的权值之和最小的生成树。
14. 什么是最短路径问题?最短路径问题是图论中的一个经典问题,指的是在加权图中找到两个顶点之间的最短路径。
15. 什么是图的遍历?图的遍历是指按照某种规则,访问图中的所有顶点,使得每个顶点都被访问一次。
16. 什么是堆?堆是一种特殊的完全二叉树,满足任一非叶子节点的值都大于或等于其子节点的值(最大堆)或小于或等于其子节点的值(最小堆)。
数据结构复习习题和答案(DOC)
第一章绪论一、单项选择题1.数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②和操作等的学科。
① A.操作对象 B.计算方法 C·逻辑存储 D.数据映象② A.结构 B.关系 C.运算. D.算法2.数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。
① A.算法 B.数据元素 C.数据操作 D.逻辑结构② A.操作 B.映象 C、存储 D.关系3.在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构4·算法分析的目的是①,算法分析的两个主要方面是②。
① A. 找出数据结构的合理性 B.研究算法中的输入和输出的关系C. 分析算法的效率以求改进D. 分析算法的易懂性和文档性② A. 空间复杂性和时间复杂性 B.正确性和简明性C.可读性和文档性 D.数据复杂性和程序复杂性5.计算机算法指的是①,它必具备输入、输出和②等五个特性。
① A. 计算方法 B.排序方法 C. 解决问题的有限运算序列 D.调度方法② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性C. 确定性、有穷性和稳定性 D.易读性、稳定性和安全性6. 线性表的逻辑顺序与存储顺序总是一致的,这种说法()。
A. 正确 B.不正确7. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。
A. 必须是连续的 B.部分地址必须是连续的C. 一定是不连续的D. 连续或不连续都可以8.数据结构通常是研究数据的()及它们之间的相互联系。
A.存储和逻辑结构 B.存储和抽象C.理想与抽象 D.理想与逻辑9.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为()。
A.存储结构 B.逻辑结构 C.顺序存储结构 D.链式存储结构11.非线性结构是数据元素之间存在一种()。
数据结构(C)复习思考题一及答案
数据结构(C)复习思考题一一、单选题(每题2分,共20分)1、栈和队列的共同特点是( A )。
A、只允许在端点处插入和删除元素B、都是先进后出C、都是先进先出D、没有共同点2、在存储数据时,通常不仅要存储各数据元素的值,而且还要存储( C )。
A、数据的处理方法B、数据元素的类型C、数据元素之间的关系D、数据的存储方法3、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、( B )等5个特性。
A、可执行性、可移植性和可扩充性B、可执行性、有穷性和确定性C、确定性、有穷性和稳定性D、易读性、稳定性和确定性4、设完全无向图中有n个顶点,则该完全无向图中有( A )条边。
A、 n(n-1)/2B、 n(n-1)C、 n(n+1)/2D、(n-1)/25、用某种排序方法对关键字序列(25,84,21,47,15,27,68,35,20)进行排序时,序列的变化情况如下:20,15,21,25,47,27,68,35,8415,20,21,25,35,27,47,68,8415,20,21,25,27,35,47,68,84则所采用的排序方法是( D )。
A、选择排序B、希尔排序C、归并排序D、快速排序6、设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为( A )。
A、BADCB、BCDAC、 CDABD、CBDA7、设某棵二叉树中有2000个结点,则该二叉树的最小高度为( C )。
A、9B、 10C、 11D、 128、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( C )。
A、O(0)B、O(1)C、O(n)D、O(n2)9、一个队列的入队序列是1,2,3,4,则队列的输出序列是( B )。
A、4,3,2,1B、1,2,3,4C、1,4,3,2D、3,2,4,110、向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行( D )操作。
数据结构复习题090612
《数据结构与算法》复习题一、选择题。
1.在数据结构中,从逻辑上可以把数据结构分为:线性结构和非线性结构。
2.数据结构在计算机内存中的表示是指:数据的存储结构。
3.在数据结构中,与所使用的计算机无关的是数据的:逻辑结构。
4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储:数据元素之间的关系。
5.在决定选取何种存储结构时,普通不考虑:各结点的值如何。
6.以下说法正确的选项是:一些外表上很不相同的数据可以有相同的逻辑结构。
7.算法分析的目的是:分析算法的效率以求改良,算法分析的两个主要方面是空间复杂度和时间复杂度。
11.在以下的表达中,正确的选项是二维数组是其:数据元素为线性表的线性表。
12.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着:不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致。
13.链表不具备的特点是:可随机访问任一结点。
14.不带头结点的单链表 head 为空的判定条件是: head == NULL。
15.带头结点的单链表 head 为空的判定条件是: head->next ==NULL。
16.假设某表最常用的操作是在最后一个结点之后插入一个结点或者删除最后一个结点,那末采用:带头结点的双循环链表存储方式最节省运算时间。
17.需要分配较大空间,插入和删除不需要挪移元素的线性表,其存储结构是:静态链表。
18.非空的循环单链表 head 的尾结点〔由 p 所指向〕满足: p->next ==head。
20.如果最常用的操作是取第 i 个结点及其前驱,那末采用:顺序表存储方式最节省时间。
21.在一个具有 n 个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是 O〔n〕。
22.在一个长度为 n〔n>1〕的单链表上,设有头和尾两个指针,执行:删除单链表中的最后一个元素操作与链表的长度有关。
23.与单链表相比,双链表的优点之一是:顺序访问相邻结点更灵便。
数据结构复习题及答案
数据结构复习题及答案数据结构复习题及答案数据结构是计算机科学中的重要基础,它涉及到存储、组织和管理数据的方法和技术。
在学习数据结构的过程中,我们经常会遇到各种复习题,通过解答这些题目可以巩固对数据结构的理解和掌握。
本文将给出一些常见的数据结构复习题及其答案,希望对读者的学习有所帮助。
一、数组1. 给定一个整数数组,如何找到数组中的最大值和最小值?答案:可以使用遍历数组的方式,依次比较每个元素与当前的最大值和最小值,更新最大值和最小值即可。
2. 给定一个整数数组和一个目标值,如何判断数组中是否存在两个数的和等于目标值?答案:可以使用两层循环遍历数组,依次判断每两个数的和是否等于目标值。
二、链表1. 如何反转一个单链表?答案:可以使用三个指针prev、curr和next,分别表示当前节点的前一个节点、当前节点和当前节点的下一个节点。
通过遍历链表,每次将当前节点的next指针指向prev节点,然后更新prev、curr和next指针,直到遍历到链表的末尾。
2. 如何判断一个链表是否有环?答案:可以使用快慢指针的方法。
定义两个指针slow和fast,初始时都指向链表的头节点。
slow指针每次移动一步,fast指针每次移动两步。
如果链表中存在环,那么两个指针最终会相遇;如果链表中不存在环,那么fast指针会先到达链表的末尾。
三、栈和队列1. 如何使用栈实现队列?答案:可以使用两个栈来实现队列。
一个栈用来存储入队的元素,另一个栈用来存储出队的元素。
当需要入队时,直接将元素压入第一个栈;当需要出队时,如果第二个栈为空,则将第一个栈中的元素依次弹出并压入第二个栈,然后从第二个栈中弹出元素;如果第二个栈不为空,则直接从第二个栈中弹出元素。
2. 如何使用队列实现栈?答案:可以使用两个队列来实现栈。
一个队列用来存储元素,另一个队列用来辅助操作。
当需要入栈时,直接将元素入队;当需要出栈时,将队列中的元素依次出队并入辅助队列,直到队列中只剩下一个元素,然后将该元素出队;然后交换两个队列的角色,使得辅助队列成为主队列,主队列成为辅助队列。
数据结构(C)复习思考题三及答案
数据结构(C)复习思考题三及答案一、单选题(每题2分,共20分)1、研究数据结构就是研究( D )。
A、数据的逻辑结构B、数据的存储结构C、数据的逻辑结构和存储结构D、数据的逻辑结构、存储结构及其基本操作2、线性表采用链式存储时,结点的存储地址( B )。
A、必须是不连续的B、连续与否均可C、必须是连续的D、和头结点的存储地址相连续3、算法指的是( D )。
A、计算机程序B、解决问题的计算方法C、排序算法D、解决问题的有限运算序列4、用链接方式存储的队列,在进行插入运算时( D )。
A、仅修改头指针B、头、尾指针都要修改C、仅修改尾指针D、头、尾指针可能都要修改5、以下数据结构中哪一个是非线性结构?( D )A、队列B、栈C、线性表D、二叉树6、在具有n个结点的单链表上查找值为x的元素时,其时间复杂度为( A )。
A、 O(n)B、 O(1)C、 O(n2)D、 O(n-1)7、在长度为n的顺序表的第i个位置上插入一个元素(1≤ i ≤n+1),元素的移动次数为:( A ) 。
A、n – i + 1B、n – iC、iD、i – 18、下述哪一条是顺序存储结构的优点?( C )。
A、插入运算方便B、可方便地用于各种逻辑结构的存储表示C、存储密度大D、删除运算方便9、二叉树的深度为k,则二叉树最多有( C )个结点。
A、 2kB、 2k-1C、 2k-1D、 2k-110、字符串的长度是指( C )。
A、串中不同字符的个数B、串中不同字母的个数C、串中所含字符的个数D、串中不同数字的个数二、填空题(每空2分,共20分)1、设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈的容量至少应该是 3 。
2、n个顶点的连通图至少有 n-1 条边。
3、数据的物理结构主要包括__顺序存储结构__和__链式存储结构__两种情况。
数据结构复习思考题
《数据结构》复习思考题节点 E T A D U权重10 12 7 9 4编码:U: 000(3位)D:001(3位)e:01(2位)a:11(2位)t:10(2位)树的带权路径长度:97给定数据序列:6, 3, 9, 5, 7, 8, 2, 1, 4, 12,按要求完成下列题目。
(1)构造排序二叉树,画出排序二叉树的逻辑结构;(2)给出该二叉树先序、中序和后序遍历的节点序列。
答案:(1)二叉树的逻辑结构(2)遍历结果先序:6-3-2-1-5-4-9-7-8-12中序:1-2-3-4-5-6-7-8-9-12后序:1-2-4-5-3-8-7-12-9-6(3)选作题参考答案应用左子树右下角节点替换应用右子树左下角节点替换对指定的二叉树,写出二叉树顺序存储方式的节点顺序(包括空位)、先根遍历的节点顺序、中根遍历的节点顺序、后根遍历的节点顺序。
答案:0 1 2 3 4 5 6 7 8 9A B C D E F G10 11 12 13 14 15 16 17 18 19H I J节点顺序存储的节点顺序0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19先序:中序:后序:先序:ABDEGHCFIJ 中序:DBGEHACIFJ 后序:DGHEBIJFCA对给定的图,按要求完成下列题目。
(1)写出图的邻接矩阵,邻接表;(2)写出从节点V6出发深度优先与广度优先遍历的节点序列。
答案:(1)邻接矩阵:结点 1 2 3 4 5 61 10 25 22 334 8 4 56 47 5邻接表:出边结点1 2 3 62 33 ^4 3 65 ^6 1 4 5入边结点1 62 13 1 2 44 65 66 1 4(2)遍历结果:深度优先:v6—v1—v2—v3—v4—v5广度优先:v6—v1—v4—v5—v2—v3对下列无向连通图给出图最小生成树的逻辑结构;给出求解的操作过程,最小生成树:(结果的形式不唯一)说明所依据的算法(克鲁斯卡尔,普利姆?)判断下列数据是否是堆?说明判断方法?数据如下:5,23,16,68,94,72,71,73,答案:是小根堆,按二叉树顺序存储结构确定堆的逻辑结果,并判断:对下列无向连通图给出图最小生成树的逻辑结构,并写出从V1到其它各点最短路径的构成与路径长度。
数据结构复习题及答案
数据结构复习题及答案数据结构习题一、名词解释1.数据、数据元素、数据项、数据结构、数据的逻辑结构、数据物理结构、顺序存储、链式存储、算法、时间复杂度、空间复杂度。
2.线性表、顺序表、单链表、双向链表、循环链表、双向循环链表、三个概念的区别:头指针、头结点、首元结点(第1个元素结点)。
3.栈(顺序栈、链栈)、队列(顺序队、链队)、循环队列、递归、稀疏矩阵、三元组。
4.树、叶子结点、结点的度、树的度、树的高(深)度、二叉树、遍历、满二叉树、完全二叉树、哈夫曼树、WPL、哈夫曼编码。
5.图(有向、无向)、网、边、弧、度、入度、出度、完全图(有向、无向)、(强)连通图(分量)、(最小)生成树、邻接矩阵、邻接表、DFS、BFS。
6.查找表、关键字、静态查找、动态查找、ASL、顺序查找、折半查找、分块查找、二叉排序树。
7、排序、内(外)排序、稳定性、插入(直接、希尔),交换(起泡、快速),选择(直接、堆),2路归并。
一、填空题1.数据结构是研究数据的_逻辑结构__和___物理结构__,并在这种结构上定义相关的运算,设计实现这些运算的算法,分析算法的效率。
算法的效率包括时间和空间两个方面,分别称为___时间复杂度____和__空间复杂度___。
2.数据的基本单元是__数据元素__,数据的最小单元是__数据项_。
3.算法是对特定问题求解___步骤___的一种描述,是指令的有限序列。
4.一个算法的时间复杂度为(3n3+2n—7),其数量级表示为O(n3)_。
5.一个算法具有5个特性:确定性、可行性、有穷性、输入和输出。
6.算法机能的阐发和怀抱,能够从算法的工夫庞大度和空间庞大度来评判算法的好坏。
7.数据的逻辑布局包孕调集布局、线性布局、树形布局和图型布局四品种型。
8.数据布局在计较机中的表示称为数据的物理布局,它能够采用__按次存储___或__链式存储_两种存储方法。
9.线性表有两种存储布局,划分为按次存储和链式存储。
数据结构复习题及标准答案
数据结构复习题及标准答案————————————————————————————————作者:————————————————————————————————日期:一、选择题。
(每小题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)。
数据结构总复习+习题+解答
数据结构复习资料
数据结构总复习+习题解答
第一章 绪论
1.1 理解基本概念 1、数据是信息的载体,是描述客观事物的数、字符以及能输入到计算机中,被计算机识别 和处理的符号的集合。 2、数据元素是数据的基本单位,可由若干数据项组成。 3、数据对象是性质相同的数据元素的集合。 4、数据结构指某一数据元素集合中所有数据成员之间的关系,定义为: 数据结构={D,R} 5、数据结构三要素:逻辑结构,物理结构,作用于数据结构的运算。 6、逻辑结构:数据元素间的逻辑关系,分为线性结构和非线性结构(集合、树和图结构) 。 7、物理结构:数据元素及其关系在计算机上的映像,通常按顺序存储或链式存储。 8、抽象数据类型定义了一个数据对象,数据对象中各元素之间的关系以及一组处理数据的 操作。特征:数据抽象和信息隐藏。 9、数据类型和数据结构的异同: 同:它们都具有抽象性,并不特指适用于何处,可根据问题需要用他们来表示数据元 素间的关系。 异:数据结构本身是一种数据的组织和使用形式,通过把数据定义成数据类型才能在 计算机上使用。 1.2 算法特性与性能分析 1、算法的定义:解决特定问题的一系列操作。 2、算法的 5 大特性(要素) :输入、输出、确定性、可行性和有限性。 3、算法时间复杂度分析:寻找关键操作(基本操作,通常为循环的最内层程序段) ,计算关 键操作的执行次数,一般结果为问题规模 n 的多项式。时间复杂度为该多项式的最高次幂。 T(n)=O(1)的含义:常量时间复杂度,表示算法执行时间与问题规模无关。 4、算法空间复杂度分析:算法执行时所需要的辅助空间。 S(n)=O(1)的含义: 常量空间复杂度,表示算法执行时需要的辅助空间与问题规模无关,也 称为算法原地工作。 题 1.1 如何理解抽象数据类型。 答:定义了一个数据对象,数据对象中各元素之间的关系以及一组处理数据的操作。 题 1.2 数据元素间的逻辑结构关系有哪些。 答:四种。分别是集合结构、线性结构、树状结构、图状结构。 题 1.3 通常从时间复杂度和空间复杂度来评价算法的优劣。 题 1.4 下面算法的时间复杂度为(C) int i,j; for(i=0;i<m;i++) for(j=0;j<n;j++) a[i][j]=i*j;
数据结构题目及答案
思考题一、填空题:(20分,每空1分)1、数据的基本单位是数据元素,最小单位是 s数据项。
2、 x=91; n=100;while(n>0){if (x>100){ x=x-10; n=n-1;}else x=x+1;}上述算法中语句x=x+1的执行次数T(n)= O(N^3) 。
3、已知二维数组A[21][11]采用行序为主方式存储,每个元素占4个存储单元,并且A[0][0]的存储地址为1016,则A[10][5]的存储地址是。
4、在进出规则上,队列的特点是,堆栈的特点是。
5、深度为5(根层次为1)的二叉树最多有个结点;第4层最多有个结点。
6、在长度为n的顺序表(即顺序存储结构的线性表)中插入一个元素,需要平均移动个元素。
7、在无向图中, 若对于任意一对顶点v i和v j, 都存在 , 则称此图是连通图。
8、设有一个10阶的对称矩阵A,采用压缩存储方式,以行为主存储,a00为第一个元素,其存储地址为1,每个元素占1个地址空间,则a75的地址为。
9、线性表的两种常用存储结构有存储结构和存储结构。
10、当增量d为1时,该趟希尔排序与排序基本一致。
11、数据结构是研究数据的,和算法。
12、常用图的存储结构有:邻接矩阵,邻接表,十字链表,邻接多重表;13、顺序表的插入算法int Insert(elemtype List[],int *num,int i, elemtype x) {int j;if(i<0| | i>*num+1){printf(“\n i值不合法 !”);return 0;}for (j=*num;j>=i;j--); /*数据元素依次后移*/List[ i]=x; (*num)++;return 1;}1在单链表中设置头结点的作用是___ 简化操作_____________________________________。
2顺序存储结构使线性表中逻辑上相邻的数据元素在物理位置上也相邻。
(0012)《数据结构》复习思考题答案(DOC)
(0012)《数据结构》复习思考题答案1:[论述题]1、算法的时间复杂度仅与问题的规模相关吗?2、下列程序段带标号语句的频度和时间复杂度。
( 1 ) I=0;while (I<N)&&(A[I]!=K)I++; //语句3return(I);( 2 ) n为不小于1的整数(设k的初值等于1)void pp ( int k){if (k==n) //语句1for (I=0; I语句2printf(a[I]); //语句3else{ for (I=k-1;I语句4a[I]=a[I]+I; //语句5pp(k+1); //语句6}}//pp3、常用的存储表示方法有哪几种?参考答案:1、不,事实上,算法的时间复杂度不仅与问题的规模相关,还与输入实例中的元素取值等相关,但在最坏的情况下,其时间复杂度就是只与求解问题的规模相关的。
我们在讨论时间复杂度时,一般就是以最坏情况下的时间复杂度为准的。
2、(1)这个算法完成在一维数组a[n]中查找给定值k的功能。
语句三的频度不仅与问题的规模n有关,还与输入实例中a的各元素取值以及k的取值相关,即与输入实例的初始状态复杂有关。
若a中没有与k相等的元素,则语句三的频度为n;若a中的第一个元素a[0]等于k,则语句三的频度是常数0。
在这种情况下,可用最坏情况下的时间复杂度作为时间复杂度。
在此例中即为O(n)。
这样做的原因是:最坏情况下的时间复杂度是在任何输入实例上运行时间的上界。
有时,也可能选择将算法的平均(或期望)时间复杂度作为讨论目标。
所谓的平均时间复杂度是指所有可能的输入实例以等概率出现的情况下算法的期望运行时间与问题规模的数量级的关系。
此例中,以k出现在任何位置的概率相同,都为1/n,则语句三的执行频度为[0+1+2+…+(n-1)]/n=(n-1)/2。
它决定了此程序段的平均时间复杂度的数量级为f(n)=n,记作O(n)。
(2)在计算包含调用语句的算法的语句频度时,需考虑到调用发生时在被调用算法中各语句的执行情况。
数据结构与算法(C语言篇)第7章 习题答案[2页]
习题答案1.思考题(1)首先采用循环的方式对单向循环链表进行遍历,然后寻找需要删除元素的上一个元素与下一个元素,最后将这两个元素进行连接,即可实现指定元素的删除。
每一次删除元素,单向循环链表都会重新连接为一个新的环。
然后继续指定元素进行删除,重复步骤,直到环中的元素全部删除完为止。
(2)回溯法,即确定了解空间的组织结构后,就可以从开始结点开始,以深度优先的方式对整个解空间进行搜索。
这个开始的结点就成为活结点,同时也是当前的扩展结点。
在此结点向下进行纵深搜索移动的一个新的结点,那么这个新借贷就会成为新的活结点和拓展结点,但是如果当前的扩展结点不能再向纵深移动,那么此活结点就会变为死结点,此时就要进行回溯移动,移动到最近的活结点,并将此活结点变为当前的扩展结点。
这就是回溯的工作方式,也是其工作的基本思想。
(3)动态规划法与分治法类似,其基本的思想是将规模较大的问题分解为较小的子问题,先求解子问题,然后通过这些子问题的解得到原问题的解,但是与分治法不同的是,经过分解后得到的子问题之间并不是相互独立的。
为了达到这一目的,可以用一个表来记录所有已经解决的子问题,这样不管计算过的子问题的答案在后面的求解过程中是否被用到都会被记录,这就是动态规划法的思想。
4.编程题(1)1int g[N][N] //表示无向图对应的矩阵2#define M (1 << (N-1))34int dp[N][M];56void TSP(){7 //初始化dp[i][0]8 int i = 0, j, k;9 for(i = 0; i < N; i++){10 dp[i][0] = g[i][0];11 }12 //求解dp[i][j],先更新列再更新行13 for(j = 1; j < M; j++){14 for(i = 0; i < N; i++){15 dp[i][j] = INF;16 //如果集合j(或状态j)中包含顶点i,则不符合条件退出17 //判断方法为:判断j对应的二进制数的第i位是否为118 if(((j >> (i - 1)) & 1) == 1){19 continue;20 }21 for(k = 1; k < N; k++){22 //跳过不合理的路径选择23 if(((j >> (k - 1)) & 1) == 0){24 continue;25 }26 //更新dp[i][j]的值27 //计算从i开始经过状态j回到起始点的最短距离28 if(dp[i][j] > g[i][k] + dp[k][j ^ (1 << (k - 1))]){29 dp[i][j] = g[i][k] + dp[k][j ^ (1 << (k - 1))];30 }31 }32 }33 }34}35。
数据结构(C)复习思考题五及答案
数据结构(C)复习思考题一一、单选题(每题2分,共20分)1、树最适合用来表示( C )。
A、有序数据元素B、无序数据元素C、元素之间具有分支层次关系的数据D、元素之间无联系的数据2、二叉树的第k层的结点数最多为( D )。
A、2k-1B、2K+1C、2K-1D、 2k-13、由两个栈共享一个向量空间的好处是:( B )。
A、减少存取时间,降低下溢发生的机率B、节省存储空间,降低上溢发生的机率C、减少存取时间,降低上溢发生的机率D、节省存储空间,降低下溢发生的机率4、以下说法中正确的是( A )。
A、串是一种特殊的线性表B、串的长度必须大于零C、串中元素只能是字母D、空串就是空白串5、一个非空广义表的表头( D )。
A、不可能是子表B、只能是子表C、只能是原子D、可以是子表或原子6、假设一个有n个顶点和e条弧的有向图用邻接表表示,则删除与某个顶点vi 相关的所有弧的时间复杂度是( C )。
A、O(n)B、O(e)C、O(n+e)D、O(n*e)7、设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为( A )。
A、p->next=p->next->nextB、p=p->nextC、p=p->next->nextD、p->next=p8、设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为( C )。
A、2,3,5,8,6B、3,2,5,8,6C、 3,2,5,6,8D、 2,3,6,5,89、一个队列的入队序列是1,2,3,4,则队列的出队序列是( B )。
A、 1,2,3,4B、 4,3,2,1C、 1,4,3,2D、 3,4,1,210、队列是一种( A )的线性表。
A、先进先出B、先进后出C、只能插入D、只能删除二、填空题(每空2分,共20分)1、设输入序列为1、2、3,则经过栈的作用后可以得到___5___种不同的输出序列。
数据结构(C)复习思考题二及答案
数据结构(C)复习思考题二及答案一、单选题(每题2分,共20分)1、数据结构在计算机内存中的表示是指( A )。
A、数据的存储结构B、数据结构C、数据的逻辑结构D、数据元素之间的关系2、在以下的叙述中,正确的是( B )。
A、线性表的顺序存储结构优于链表存储结构B、二维数组是其数据元素为线性表的线性表C、栈的操作方式是先进先出D、队列的操作方式是先进后出3、下面关于线性表的叙述中,错误的是( B )。
A、线性表采用顺序存储,必须占用一片连续的存储单元B、线性表采用顺序存储,便于进行插入和删除操作。
C、线性表采用链式存储,不必占用一片连续的存储单元D、线性表采用链式存储,便于进行插入和删除操作。
4、数组A[0 … 4,-1 … -3,5 …7]中含有的元素个数是( A )。
A、55B、 45C、36D、165、栈的插入和删除操作在( A )进行。
A、栈顶B、栈底C、任意位置D、指定位置6、在一个单链表中,若q所指结点是p所指结点的前驱结点,若在q与p之间插入一个s所指的结点,则执行( D )。
A、s→link=p→link; p→link=s;B、p→link=s; s→link=q;C、p→link=s→link; s→link=p;D、q →link=s; s→link =p;7、以下哪种组织结构适于对动态查找表进行高效率查找( C )。
A、有序表B、分块有序表C、三叉排序树D、线性链表8、根据二叉树的定义可知二叉树共有( B )种不同的形态。
A、4B、5C、6D、 79、设有两个串S1和S2,求串S2在S1中首次出现位置的运算称作( C )。
A、连接B、求子串C、模式匹配D、判断子串10、稀疏矩阵的常见压缩存储方法有( C )两种。
A、二维数组和三维数组B、三元组和散列表C、三元组和十字链表D、散列表和十字链表二、填空题(每空2分,共20分)1、线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
数据结构(第二版)复习题及答案
复习题一、选择:1、数据的基本单位是( B ),在计算机中作为整体进行处理A、数据项B、数据元素C、数据对象D、数据结构2、在一个顺序表中,如果第一个元素的存储地址为100,每个元素的长度为2,则第5个元素的地址为(B )计算过程:100+(5-1)*2=108A、110B、108C、100D、1203、链表不具备的特点是(A )A、可以随机访问B、插入删除不必移动元素C、不必事先估计存储空间D、所需空间与其长度成正比4、在一个长度为n的顺序表的第i个元素前插入一个元素时,需要向后移动( A )个元素A 、n - i +1 B、n – i C、n – i – 1 D、i5、在一个单链表中,如果在P所指的结点后插入S所指结点,则执行( B )A、s ->next = p p -> next =sB、s ->next =p ->next p ->next = sC、s -> next = p -> next p = sD、p - >next = s s->next =p6、删除一个长度为n的顺序表的第i个元素,需要向前移动( B )个元素A 、n - i +1 B、n – i C、n – i – 1 D、i7、从一个具有n个结点的单链表中查找其值为x的结点,在查找成功的情况下,需要比较( D )个结点A 、n B、n /2 C、(n – 1)/2 D、(n + 1)/28、在一个单链表中,q是p 所指结点的前趋结点,如果在q和p之间插入s结点,则执行( C )A、s->next = p->next p->next =sB、p->next =s>next s->next = pC、q->next =s s->next = pD、p->next =s s->next = q9、使带头结点的单链表为空的判定条件是( B )A、head = NULLB、head -> next = = NULLC、head - >next = headD、head ! = NULL10、在一个具有n个结点的有序链表中插入一个新结点并仍然有序的时间复杂度是( B )A、O(1)B、O(n)C、O(n2)D、O(nlog2n)11、如果1,2,3依次进栈,则出栈顺序不可能是( C )A、3 2 1B、2 1 3C、3 1 2D、1 3 2解析:1 2 3分别进栈→3 2 1分别出栈1进2进→2出1出3进→ 3出1进→1出2进3进→3出2出12、非空的循环单链表head的尾结点P满足( C )A、p -> next = = NULLB、P = = NULLC、P - >next = = headD、p = = head13、建立有序单链表的时间复杂度为( C )A、O(1)B、O(n)C、O(n2)D、O(nlog2n)14、不带头结点的单链表为空的判定条件是(A )A、head = NULLB、head -> next = = NULLC、head - >next = headD、head ! = NULL15、判断链队为空的条件是( A )A、Q->front = = Q->rearB、Q->front != Q->rearC、Q->front = = (Q->rear +1)% nD、Q->front != (Q->rear +1)% n16、循环队列的头尾指针分别为front和rear,则循环队列为满的条件是( C )A、Q->front = = Q->rearB、Q->front != Q->rearC、Q->front = = (Q->rear +1)% nD、Q->front != (Q->rear +1)% n17、进队序列为1,2,3,4,进行1次出队运算后,队头结点为( B )A、1B、2C、3D、418、在一个单链表中,删除P所指结点的后继结点,应执行( A )A、p ->next = p->next ->nextB、p = p->next; p ->next = p->next ->nextC、p ->next = p ->nextD、p = p ->next ->next19、链表的优点是(C )A、便于随机存取B、花费的存储空间比顺序表少C、便于插入与删除D、数据元素的物理顺序与逻辑顺序相同20、在一个链队中,假设f和r分别为队首和队尾指针,则插入s所指结点的运算是( B )A、f->next=s;f=s;B、r->next=s;r=s;C、s->next=r;r=s;D、s->next=f;f=s;21、设高度为h的二叉树上只有度为0和度为2的结点,则此二叉树中包含的结点数至少为( B )个A、2hB、2h-1C、2h+1D、h+122、一个栈的进栈序列是1,2,3,4,则出栈序列不可能是(C )A、1 2 3 4B、4 3 2 1C、4 1 3 2D、3 2 4 123、采用邻接表存储的图的深度优先搜索遍历类似于二叉树的(A )A、先序遍历B、中序遍历C、后序遍历D、层次遍历24、从一个栈顶指针为HS的链栈中删除一个结点时,用x保存被删结点的值,则执行(D )A、x=HS; HS= HS->nextB、x=HS->data;C、HS= HS->next; x=HS->dataD、x=HS->data; HS= HS->next25、具有6个结点的无向图至少有( A )条边才能形成连通图A、5B、6C、7D、826、在链队Q中,插入S所指结点需执行的命令是( B )A、Q->front ->next =s ; f=sB、Q->rear->next=s; Q.rear=sC、s->next =Q->rear Q->rear=sD、S->next=Q->front Q->front =s;27、如果二叉树的先序遍历序列为ABDGCEFH,中序遍历序列为DGBAECHF,则后序遍历序列为( D )A、BDGCEFHAB、GDBECFHAC、BDGAECHFD、GDBEHFCA28、具有5个顶点的无向完全图有( A )条边A、10B、24C、25D、2029、采用邻接表存储的图的广度优先搜索遍历类似于二叉树的(D )A、先序遍历B、中序遍历C、后序遍历D、层次遍历30、在链队Q中,删除一个结点需执行的命令是(B )A、Q->rear = Q->front->nextB、Q->rear->next= Q->rear->next->nextC、Q->front->next = Q->front->next->nextD、Q->front= Q->rear->next31、在解决计算机与打印机之间速度不匹配问题时通常设置一个打印缓冲区,主机将要输出的数据依次写入缓冲区,打印机则从缓冲区取出数据打印,该缓冲区使用(B )结构A、堆栈B、队列C、数组D、树32、在有向图的邻接表存储结构中,顶点v在表结点中出现的次数是( B )A、顶点v的度B、顶点的出度C、顶点v的入度D、依附于顶点V的边数33、将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点编号,根结点编号为1,则编号为49的结点的左孩子为(B )A、99B、98C、50D、4834、二维数组SA中,每个元素的长度为3个字节,行下标从0到7,列下标从0到9,从首地址SA开始连续存放在存储器中,该数组按列存放,元素A[4][7]的地址为(B )A、SA +141 B、SA+180 C、SA+222 D、SA+22535、数组A中,每个元素的长度是3字节,行下标i从1到8,列下标j从1到10,从首地址开始连续存放在存储器内,存放该数组至少需要的单元数是( B )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、基础题 题目
数据结构研究的主要内容是:非数值计算程序设计中数据的 ( ① )和( ② ) 以及它们之间( ③ )方法。 ① C.逻辑结构 ② D.存储结构 ③ B.关系与算法 一棵含 18 个结点的二叉树的高度至少为( ) C.5 算法分析的主要目的是对( ① )和( ② )两个方面进行评价。 ① C. 算法的空间复杂度 ② A. 算法的时间复杂度 具有频繁插入删除操作的线性表,应采用( )存储结构效率较高。 B. 链表 无向图中一个顶点的度是指图中( ) B.与该顶点相邻接的顶点数 下列程序段的时间复杂度数量级为__________。
)
B.堆排序
B
若用数组 s[0..n-1]作为两个栈 s1 和 s2 的共用存储空间,且仅当 s[0..n-1]全满时,各栈才不能进行进栈操作。为这两个栈选择 C
空间利用的最佳方案,问 s1 和 s2 栈顶指针的初值分别为( )能更好地利用提供的存储空间? C.-1 和 n
如果求一个连通图中以某个顶点为根的高度最小的生成树,应采用( )。 B.广度优先搜索算法
应用左子树右下角节点替换
应用右子树左下角节点替换
对指定的二叉树,写出二叉树顺序存储方式的节点顺序(包括空位)、先根遍历 答案:
的节点顺序、中根遍历的节点顺序、后根遍历的节点顺序。
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
G
10 11 12 13 14 15 16 17 18 19
H
I
J
先序:ABDEGHCFIJ 中序:DBGEHACIFJ 后序:DGHEBIJFCA
节点顺序存储的节点顺序
0
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19
先序: 中序: 后序:
对给定的图,按要求完成下列题目。 (1)写出图的邻接矩阵,邻接表; (2)写出从节点 V6 出发深度优先与广度优先遍历的节点序列。
答案:
(1)邻接矩阵:
结点
1
2
3
4
5
6
1
10
25
判断下列数据是否是堆?说明判断方法?数据如下: 5,23,16,68,94,72,71,73,
答案: 是小根堆, 按二叉树顺序存储结构确定堆的逻辑结果,并判断:
对下列无向连通图给出图最小生成树的逻辑结构,并写出从 V1 到其它各点最短 路径的构成与路径长度。
答案: (1)最小生成树:
对给定的数据序列{19,01,23,14,55,20,84,27,68,11,10,77},应用指定 Hash 函 数和冲突解决方法,写出数据序列的最终存储结果。 Hash(key)=key%13 应用线性探测再散列方法解决冲突,在 0-13 地址空间内散列存储数据序列 中数据
( )。A.插入排序
二、操作题
题目
对给定字符集和相应权重,构造 Huffman 树并确定每个字符的 Huffman 编
码,给出 huffman 树的带权路径长度。
节点 E
T
A
D
U
权重 10 12 7
9
4
答案: 树的逻辑结构:
答案
编码: U: 000(3 位)
给定数据序列:6, 3, 9, 5, 7, 8, 2, 1, 4, 12,按要求完成下列题目。 (1)构造排序二叉树,画出排序二叉树的逻辑结构; (2)给出该二叉树先序、中序和后序遍历的节点序列。
0 1 2 3 4 5 6 7 8 9 10 11 12 13
对指定的图,写出所有可能的拓扑序列。
(2)最短路径 v1-v2:3 v1-v3:5 v1-v4:4 v1-v5:5 1-4-5 v1-v6:4 答案:
0 1 2 3 4 5 6 7 8 9 10 11 12 13
1 14 55 27 68 19 20 84
{ int key;
key = r [low]; while ( low<high ) 描
// 从表的两端,向中间扫
{ while( low < high && r [ high] >= key )
high--; r [low++] = r [ high ];
// 将小于 key 数据移动到
区域低段
答案: (1)二叉树逻辑结构:
(2)后序遍历结果
ACBDEFGH
(3)顺序存储结构图
0
1
2
3
4
5
6
7
8
9
H
D
G
A
B
F
C
10 11 12 13 14 15 16 E
给出下述图所能构成的所有拓扑序列。
答案: V0—V1—V2—V3—V4—V5 V0—V2—V1—V3—V4—V5
三、程序设计 题目
完成满足下述要求的排序函数(填空或独立完成一个具有相同方法功能的函数):
// 将小于 key 数据移动到区域低段
while( _________(3)_______ )
low++;
_____(4)______; // 将大于 key 数据移动到区域高段
}
r [ low ] = key; return low; // 返回定位 key 数据位置
}
答案
答案:
Int Partition(int r[ ], int low, int high)
B
栈和队列都是( )。A.限制存取位置的线性结构
A
若用邻接矩阵表示一个有向图,则其中每一列包含的″1″的个数为( )。 B.图中每个顶点的出度
B
在一个带权连通图 G 中,权值最小的边一定包含在 G 的( )中。A.最小生成树
A
如果在排序过程中,每次均将一个待排序的记录按关键字大小加入到前面已经有序的子表中的适当位置,则该排序方法称为 A
∞
∞
∞
∞
4
∞
∞
∞
20
∞
5
∞
∞
∞
∞
∞
答案:
5
100
∞
∞
10
60
∞
深度优先遍历:V0—V1—V2—V3—V5—V4
广度优先遍历:V0—V1—V2—V4—V5—V3
单源最短路径:
V0
V1
V0—V1:12
V2
V0—V2 :10
V3
V0—V4—V3:50
V4
V0—V4:30
V5
V0—V4—V3—V5:60
已知待散列的线性表为(36,15,40,63,22),散列用的一维地址空间为[0..6], 答案:
int Partition(int r[ ], int low, int high)
{ int key;
key = r [low];
while ( ____(1)____ )
// 从表的两端,向中间扫描
{ while( low < high && r [ high] >= key )
high--;
_____(2)______;
位置 答案: 建议能够考虑使用基数排序完成。
23 11 10 77
答案: 2—1—3—4—6—5
已知带权图的邻接表如下所示,按要求完成下列题目。 (1)给出该图的逻辑结构; (2)给出该图从 V0 出发深度优先遍历和广度优先遍历结果; (3)写出从顶点 V0 到其它各顶点的最短路径。
0
1
2
3
4
0
∞
12
10
∞
30
1
∞
∞
∞
∞
∞
2
∞
∞
∞
50
∞
3
∞
D:001(3 位) e:01(2 位) a:11(2 位) t:10(2 位)
树的带权路径长度:97 答案: (1)二叉树的逻辑结构
(2)遍历结果 先序:6-3-2-1-5-4-9-7-8-12 中序:1-2-3-4-5-6-7-8-9-12 后序:1-2-4-5-3-8-7-12-9-6 (3)选作题参考答案
k=1; while(k<=n) { k=k*3; } 从算法设计的简单性、时间复杂性和空间复杂性等多种角度考虑,你认为实现图深度优先遍历过程的控制,采用( )作 为算法辅助存储结构最合适。B. 堆栈 一个栈的数据入栈顺序为:ABCDE,指出不可能的出栈序列为( )。 C.DCEAB head 为无头结点单向向后链表,判断 head 为空表的判定条件是()A.head= =NULL 循环队列定义为:int A[m]; 使用 A[0]至 A[m-1] 作为数据存储区,已知头尾指针分别为 front 和 rear,表明队列中有效数据 元素总数(一个正整数)的表达式是( )。A.(rear-front+m)%m 带头结点的单链表 head 为空表的判定条件是( )。C. head->next==NULL 一堆栈数据进栈的次序为:1,2,3,4,5 确定下述结果中错误的是()。 D.3,1,2,4,5 根据数据元素的关键字能够直接确定记录素存储地址的方法称为( )。C.散列存储方法 算法分析的目的是( )。B.评价算法的效率
…………冲突 H2(22)=(2+1) mod 7=3;
(2)ASL= 1 2 1 1 3 1.6 5
答案:(24,65,33,80,70,56,48) 原始二叉树:
调整后的二叉树:
已知二叉树的先序序列和中序序列分别为 HDABCGFE 和 ADCBHFEG,按要求 完成下列题目。 (1)画出该二叉树; (2)给出二叉树后序遍历的结果; (3)给出该二叉树顺序存储的逻辑结构图。