南京工业大学数据结构作业答案作业6
- 格式:docx
- 大小:19.15 KB
- 文档页数:3
数据构造作业题及答案第一章绪论1、简述以下概念:数据、数据元素、数据构造、逻辑构造、存储构造、线性构造、非线性构造。
数据:指能够被计算机识别、存储与加工处理的信息载体。
数据元素:就是数据的根本单位,在某些情况下,数据元素也称为元素、结点、顶点、记录。
数据元素有时可以由假设干数据项组成。
数据构造:指的是数据之间的相互关系,即数据的组织形式。
一般包括三个方面的内容:数据的逻辑构造、存储构造与数据的运算。
逻辑构造:指各数据元素之间的逻辑关系。
存储构造:就是数据的逻辑构造用计算机语言的实现。
线性构造:数据逻辑构造中的一类,它的特征是假设构造为非空集,那么该构造有且只有一个开场结点与一个终端结点,并且所有结点都最多只有一个直接前趋与一个直接后继。
线性表就是一个典型的线性构造。
非线性构造:数据逻辑构造中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋与直接后继。
2、常用的存储表示方法有哪几种?顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来表达。
由此得到的存储表示称为顺序存储构造。
链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。
由此得到的存储表示称为链式存储构造。
索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。
散列存储方法:就是根据结点的关键字直接计算出该结点的存储地址。
3、求解以下算法的时间复杂度第二章线性表1、试描述头指针、头结点、开场结点的区别、并说明头指针与头结点的作用。
答:开场结点是指链表中的第一个结点,也就是没有直接前趋的那个结点。
链表的头指针是一指向链表开场结点的指针(没有头结点时),单链表由头指针唯一确定,因此单链表可以用头指针的名字来命名。
头结点是我们人为地在链表的开场结点之前附加的一个结点。
有了头结点之后,头指针指向头结点,不管链表否为空,头指针总是非空。
Ch6 树一、选择题:1.下列关于哈夫曼树的叙述,错误的是 (C )。
A .哈夫曼树根结点的权值等于所有叶结点权值之和。
B .具有 n 个叶结点的哈夫曼树共有 2n-1个结点。
C .哈夫曼树是一棵二叉树,因此它的结点的度可以为 0,1,2。
D .哈夫曼树是带权路径长度最短的二叉树。
2.由 3 个结点可以构成多少棵不同形态的二叉树(C )。
A .3 B .4 C .5 D . 63.如果一棵二叉树结点的前序序列是 A ,B,C ,后序序列是 C ,B ,A ,则该二叉树结点的中序序列是 (D )。
A .A ,B,C B .A ,C ,B C .B,C,A D .不能确定4.如图所示的 4 棵二叉树中, (B )不是彻底二叉树。
A .B .C . D.5.二叉树按某种顺序线索化后,任一结点均有指向其前趋和后继的线索,这种说法 (B )A .正确B .错误若结点有左子树,则令其 lchild指针指示其左孩子;若结点没有左子树,则令其 lchild指针指示其前驱;若结点有右子树,则令其 rchild指针指示其右孩子;若结点没有右子树,则令其 rchild指针指示其后继。
6.二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法 (A )。
A .正确B .错误7.对一棵 70 个结点的彻底二叉树,它有(A )个叶子结点。
A. 35 B .40 C . 30 D .448.设一棵二叉树中,度为 1 的结点数为 9,则该二叉树的叶子结点的数目为 (D )。
A .10 B .11 C .12 D .不确定 n =n +1 9.假定根结点的层次为 0,含有 15 个结点的二叉树最小高度为 (A )。
A . 3 B . 4 C . 5 D . 6假定根结点的层次为 1,含有 15 个结点的二叉树最小高度为 410.若一棵二叉树中,度为 2 的结点数为 9,该二叉树的叶子结点的数目为 (A )。
参考答案第一章、绪论一、选择题1 B;2 A; 3 B;4 C ;5 C; 6 B;7 C;8 C;9 D;10 B。
二、填空题1、存储;2、无,1,无,1;3、前驱,1,后继,任意多个;4、一对一,一对多,多对多;5、时间复杂度,空间复杂度;6、集合,线性结构,树形结构,图形结构;7、顺序结构,链式结构,索引结构,散列结构;8、顺序。
三、问答题与算法题1、3 ;2、T1 ( n ) = 5n 2 -O ( n ) ; T2 ( n ) = 3 n 2 + O ( n ) ; T3 ( n ) = 8 n 2 + O(log n) ;T4 ( n ) = 1.5 n 2 + O ( n ) 。
T4 ( n ) 较优,T3 ( n )较劣。
3、见课本。
第二章线性表一、选择题1C;2A;3D;4B;5D;6B;7C;8B;9A;10C;11D;12D;13C;14C.二、填空题1、O ( 1 ), O ( n );2、单链表,双链表;3、地址,指针;4、4,2;5、便于访问尾结点和头结点;6、前驱;7、L->next== L且L->prior== L;8、顺序。
三、问答题与算法题1、头指针:结点或头结点的指针变量。
其作用是存放第一个结点或头结点的地址,从头指针出发可以找到链表中所有结点的信息。
头结点:是附加在链表的第一个结点之前的一个特殊结点,其数据域一般不存放信息。
其作用是为了简化运算,将空表与非空表统一起来,将第一个结点与其他结点的处理统一起来。
首结点:是链表的第一个结点。
2、(1)基于空间的考虑。
当要求存储的线性表长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表长度变化大,难以估计其存储规模时,采用动态链表作为存储结构为好。
(2)基于时间的考虑。
若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之,若需要对线性表进行频繁地插入或删除等的操作时,宜采用链表做存储结构。
一、一、单选题(每题2 分,共20分)1. 1. 栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2. 2. 用链接方式存储的队列,在进行插入运算时( ).A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改3. 3. 以下数据结构中哪一个是非线性结构?( )A. 队列B. 栈C. 线性表D. 二叉树4. 4. 设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。
A.688 B.678 C.692 D.6965. 5. 树最适合用来表示( )。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据6. 6. 二叉树的第k层的结点数最多为( ).A.2k-1 B.2K+1 C.2K-1 D. 2k-17.7. 若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,38.8. 对n个记录的文件进行快速排序,所需要的辅助存储空间大致为A. O(1)B. O(n)C. O(1og2n)D. O(n2)9.9. 对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有()个,A.1 B.2 C.3 D.410.10. 设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
A.5B.6C.7D.8二、二、填空题(每空1分,共26分)1. 1. 通常从四个方面评价算法的质量:_________、_________、_________和_________。
第六章树和二叉树(下载后用阅读版式视图或web版式可以看清)习题一、选择题1.有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。
表示该遗传关系最适合的数据结构为( )。
A.向量B.树C图 D.二叉树2.树最合适用来表示( )。
A.有序数据元素 B元素之间具有分支层次关系的数据C无序数据元素 D.元素之间无联系的数据3.树B的层号表示为la,2b,3d,3e,2c,对应于下面选择的( )。
A. la (2b (3d,3e),2c)B. a(b(D,e),c)C. a(b(d,e),c)D. a(b,d(e),c)4.高度为h的完全二叉树至少有( )个结点,至多有( )个结点。
A. 2h_lB.h C.2h-1 D. 2h5.在一棵完全二叉树中,若编号为f的结点存在右孩子,则右子结点的编号为( )。
A. 2iB. 2i-lC. 2i+lD. 2i+26.一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为( )。
A.3B.4C.5D.67.深度为5的二叉树至多有( )个结点。
A. 31B. 32C. 16D. 108.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。
A. 15B. 16C. 17D. 479.题图6-1中,( )是完全二叉树,( )是满二叉树。
1 / 1710.在题图6-2所示的二叉树中:(1)A结点是A.叶结点 B根结点但不是分支结点C根结点也是分支结点 D.分支结点但不是根结点(2)J结点是A.叶结点 B.根结点但不是分支结点C根结点也是分支结点 D.分支结点但不是根结点(3)F结点的兄弟结点是A.EB.D C.空 D.I(4)F结点的双亲结点是A.AB.BC.CD.D(5)树的深度为A.1B.2C.3D.4(6)B结点的深度为A.1B.2C.3D.4(7)A结点所在的层是A.1B.2C.3D.411.在一棵具有35个结点的完全二叉树中,该树的深度为( )。
数据结构答案第6章第6章数据结构答案1. 栈的应用栈是一种常见的数据结构,其特点是先进后出。
下面是一些关于栈的应用场景。
1.1 函数调用栈在程序中,每当一个函数被调用时,相关的变量和状态信息会被存储在一个称为函数调用栈的栈中。
1.2 表达式求值栈也常用于表达式求值,特别是中缀表达式转后缀表达式的过程中。
通过使用栈,我们可以很方便地进行算术运算。
1.3 逆序输出如果我们需要逆序输出一段文本、字符串或者其他数据,可以使用栈来实现。
将数据依次压入栈中,然后再逐个弹出即可。
2. 队列的实现与应用队列是另一种常见的数据结构,其特点是先进先出。
下面是一些关于队列的实现和应用。
2.1 数组实现队列队列可以使用数组来实现。
我们可以使用两个指针分别指向队列的前端和后端,通过移动指针来实现入队和出队的操作。
2.2 链表实现队列队列还可以使用链表来实现。
我们可以使用一个指针指向队列的头部,并在尾部添加新元素。
通过移动指针来实现出队操作。
2.3 广度优先搜索(BFS)队列常用于广度优先搜索算法。
在BFS中,我们需要按照层级来访问节点。
使用队列可以帮助我们按照顺序存储和访问节点。
3. 树的遍历和应用树是一种非常重要的数据结构,在计算机科学中应用广泛。
下面是一些关于树的遍历和应用的介绍。
3.1 深度优先搜索(DFS)深度优先搜索是树的一种遍历方式。
通过递归或者使用栈的方式,可以按照深度优先的顺序遍历树的所有节点。
3.2 广度优先搜索(BFS)广度优先搜索也可以用于树的遍历。
通过使用队列来保存要访问的节点,可以按照层级的顺序遍历树。
3.3 二叉搜索树二叉搜索树是一种特殊的二叉树,它的每个节点的值都大于左子树中的值,小于右子树中的值。
这种结构可以用于高效地进行数据查找。
4. 图的表示与遍历图是由节点和边组成的一种数据结构。
下面是一些关于图的表示和遍历的说明。
4.1 邻接矩阵表示法邻接矩阵是一种常见的图的表示方法。
使用一个二维数组来表示节点之间的连接关系。
数据结构课后习题答案1--7题目1:请你设计一个栈数据结构,使其具备以下功能:可以在O(1)的时间复杂度内获取栈的最小元素。
解答1:要实现在O(1)的时间复杂度内获取栈的最小元素,可以使用两个栈来实现。
一个栈用来保存原始数据,另一个栈用来保存当前栈的最小元素。
具体实现如下:1. 初始化两个栈:stack和min_stack,其中stack用于保存所有元素,min_stack用于保存当前栈中的最小元素。
2. 插入元素时,先将元素插入stack中,然后判断插入的元素是否比min_stack的栈顶元素小,如果是,则将元素也插入到min_stack中;如果不是,则将min_stack的栈顶元素再次插入到min_stack中。
3. 删除元素时,分别从stack和min_stack中弹出栈顶元素。
这样,min_stack的栈顶元素始终是stack中的最小元素。
题目2:请你设计一个队列数据结构,使其具备以下功能:可以在O(1)的时间复杂度内获取队列的最大元素。
解答2:要实现在O(1)的时间复杂度内获取队列的最大元素,可以使用两个队列来实现。
一个队列用来保存原始数据,另一个队列用来保存当前队列的最大元素。
具体实现如下:1. 初始化两个队列:queue和max_queue,其中queue用于保存所有元素,max_queue用于保存当前队列中的最大元素。
2. 插入元素时,先将元素插入queue中,然后判断插入的元素是否比max_queue的队尾元素大,如果是,则将元素也插入到max_queue的队尾;如果不是,则将max_queue中所有比插入元素小的元素都弹出,再将插入元素插入到max_queue的队尾。
3. 删除元素时,分别从queue和max_queue中弹出队头元素。
这样,max_queue的队头元素始终是queue中的最大元素。
题目3:请你设计一个栈数据结构,使其除了具有常规的入栈和出栈功能外,还具备以下功能:能够在O(1)的时间复杂度内获取栈中的最大元素。
习题六树和二叉树6.1 单项选择题1. 如图8.7所示的4棵二叉树,_C___不是完全二叉树。
3. 在线索化二叉树中,t所指结点没有左子树的充要条件是B__。
A. t—>left=NULLB. t—>ltag=1C. t—>ltag=1且t—>left=NULLD. 以上都不对4. 二叉树按某种顺序线索化后,任一结点均有指向其前驱和后续的线索,这种说法_B__。
A. 正确B. 错误5. 二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法__A__。
A. 正确B. 错误6. 由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法___B _。
A. 正确B. 错误7. 设高度为h 的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为__B__。
A. 2hB. 2h-1C. 2h+1D. h+1 a8. 如图8.9所示二叉树的中序遍历序列___B _。
A. abcdgefB. dfebagcC. dbaefcgD. defbagc9. 已知某二叉树的后序遍历序列是dabec ,中序遍历序列是debac ,它的前序遍历序列是D____。
A. acbedB. decabC. deabcD. cedba10.设a,b 为一棵二叉树上的两个结点,在中序遍历时,a 在b 前的条件是 B 。
A .a 在b 的右方B .a 在b 的左方C .a 是b 的祖先D .a 是b 的子孙图8.9 一棵二叉树11. 假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为 个。
BA .15B .16C .17D .4712.某二叉树的前序遍历结点访问顺序是abdgcefh ,中序遍历的结点访问顺序是dgbaechf ,则其后序遍历的结点访问顺序是D ___ _。
A. bdgcefhaB. gdbecfhaC. bdgaechfD. gdbehfca13. 二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。
《数据结构》各章课后作业答案 第一章 绪论课后作业答案1. 简述线性结构与非线性结构的不同点。
答:线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是多对多的。
2.分析下面各程序段的时间复杂度(每小题5分,共20分)解:1.第一个for 循环执行n+1次,第二个for 循环执行n(m+1)次,A[i][j]=0;语句执行n*m 次,此程序段总的执行次数为n+1+n*(m+1)+n*m=2nm+2n+1次。
故时间复杂度为O(n*m)。
2.算法的时间复杂度是由嵌套最深层语句的执行次数决定的,本程序段嵌套最深层语句为:s+=B[i][j];它的执行次数为n 2,所以本程序段的时间复杂度是O(n 2)。
3. 该算法的基本操作是语句x++, 其语句频度为:1111n n i i j --==∑∑=10()n i n i -=-∑=(1)2n n - 所以本程序段的时间复杂度是O(n 2)。
4.设语句执行m 次,则有3m≤n ⇒m ≤log 3n所以本程序段的时间复杂度为O(log 3n)。
第二章 线性表课后作业答案1. 填空题。
(1)在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。
(2)线性表中结点的集合是 有限 的,结点间的关系是 一对一的。
(2)s=0;for (i=0; i<n; i++)for(j=0; j<n; j++) s+=B[i][j]; sum=s; 答:O (n 2)(1) for (i=0; i<n; i++) for (j=0; j<m; j++) A[i][j]=0;(3) x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(4)i=1;while(i<=n)i=i*3;(3)向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动 n-i+1 个元素。
第一章绪论一、选择题1.数据结构是一门研究非数值计算的程序设计问题中计算机的1以及它们之间的2和运算等的学科。
1 A.数据元素 B.计算方法 C.逻辑存储 D.数据映像2 A.结构 B.关系 C.运算 D.算法2.数据结构被形式地定义为(K, R),其中K是1的有限集,R是K上的2有限集。
1 A.算法 B.数据元素 C.数据操作 D.逻辑结构2 A.操作 B.映像 C.存储 D.关系3.在数据结构中,从逻辑上可以把数据结构分成。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4.线性结构的顺序存储结构是一种1的存储结构,线性表的链式存储结构是一种2的存储结构。
A.随机存取 B.顺序存取 C.索引存取 D.散列存取5.算法分析的目的是1,算法分析的两个主要方面其一是指2,其二是指正确性和简单性。
1 A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性2 A.空间复杂度和时间复杂度 B.研究算法中的输入和输出的关系C.可读性和文档性D.数据复杂性和程序复杂性k6.计算机算法指的是1,它必须具备输入、输出和2等5个特性。
1 A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法2 A.可执行性、可移植性和可扩充性 B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性7.线性表的逻辑顺序与存储顺序总是一致的,这种说法。
A.正确 B.不正确8线性表若采用链式存储结构时,要求内存中可用存储单元的地址。
A.必须连续的B.部分地址必须连续的C.一定是不续的D连续不连续都可以9.以下的叙述中,正确的是。
A.线性表的存储结构优于链式存储结构 B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.队列的操作方式是先进后出10.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法。
作业11. 数据结构和数据类型两个概念之间有区别吗?答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。
数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。
2•阅读下列C程序段,写出相应的执行结果(每小题4分,共8分)(〔)。
printf( In put x ); ( 2)。
Io ng int fact (n)scanf( “ %d',&x);if (x<=30)if(x>20) y=x;else if (x>10) y=2*x;if (x>0&& x<30)pri ntf(“ x=%d,y= %d ”else printf(输入数据错!”);试写出当x分别为18,8时的执行结果。
答:运行结果为:x=18,y=36x=8,y=运行前的值,且从x = 30开始为数据错int n;{long f;if(n >1)f= n*fact( n-1);else f=1;,x,y);return(f);}main (){int n;long y;n=5;y=fact( n);printf( “ %d,% n” ,n,y);}答:运行结果为:5,120 此题为递归运算3.分析下面各程序段的时间复杂度1. for (i=0; i<n; i++)for (j=0; j<m; j++)A[i][j]=0;答:0( m*n)3. x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;解:因为x++共执行了n-1+ n-2+ ........... + 1 = n(n-1)/2,所以执行时间为O (n2)"J H "J f}.( IT— 1)作业2 2. s=0;for i=0; i<n; i++)for(j=0; j< n; j++)s+=B[i][j]; sum=s; 答: O(n2)4. i=1;while(i<=n) i=i*3; 答:O (log3n)1.【严题集2.3②】试比较顺序存储结构和链式存储结构的优缺点。
数据结构(C++版)课后作业6-8章附答案-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII第6 章图课后习题讲解1. 填空题⑴设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。
【解答】0,n(n-1)/2,0,n(n-1) 【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。
⑵任何连通图的连通分量只有一个,即是()。
【解答】其自身⑶图的存储结构主要有两种,分别是()和()。
【解答】邻接矩阵,邻接表⑸已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。
【解答】求第j列的所有元素之和⑹有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。
【解答】出度⑺图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。
【解答】前序,栈,层序,队列(8)如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。
【解答】回路2. 选择题⑵n个顶点的强连通图至少有()条边,其形状是()。
A n B n+1 C n-1 D n×(n-1) E 无回路F 有回路G 环状H 树状【解答】A,G⑶含n 个顶点的连通图中的任意一条简单路径,其长度不可能超过()。
A 1 B n/2 C n-1 D n【解答】C 【分析】若超过n-1,则路径中必存在重复的顶点。
(4)最小生成树指的是()。
A 由连通网所得到的边数最少的生成树B 由连通网所得到的顶点数相对较少的生成树C 连通网中所有生成树中权值之和为最小的生成树D 连通网的极小连通子图【解答】C(5)下面关于工程计划的AOE网的叙述中,不正确的是()A 关键活动不按期完成就会影响整个工程的完成时间B 任何一个关键活动提前完成,那么整个工程将会提前完成C 所有的关键活动都提前完成,那么整个工程将会提前完成D 某些关键活动若提前完成,那么整个工程将会提前完【解答】B 【分析】AOE网中的关键路径可能不止一条,如果某一个关键活动提前完成,还不能提前整个工程,而必须同时提高在几条关键路径上的关键活动。
数据结构作业及答案习题一一、单项选择题1.数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②和运算等的学科。
①A.数据元素B.计算方法C.逻辑存储D.数据映象②A.结构B.关系C.运算D.算法2.数据结构被形式地定义为(K,R),其中K是①的有限集,R是K上的②有限集。
①A.算法B.数据元素C.数据操作D.逻辑结构②A.操作B.映象C.存储D.关系3.在数据结构中,从逻辑上可以把数据结构分成________。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4.算法分析的目的是①,算法分析的两个主要方面是②①A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性②A.空间复杂度和时间复杂度B.正确性和简单性C.可读性和文档性D.数据复杂性和程序复杂性5.计算机算法指的是①,它必须具备输入、输出和②等5个特性。
①A.计算方法B.排序方法C.解决问题的有限运算序列D.调度方法②A.可执行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性易读性、稳定性和安全性二、简述下列概念数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,线性结构,非线性结构。
三、填空题1.下面程序段的时间复杂度是_______。
For(i=0;i2.下面程序段的时间复杂度是_______。
i==0While(i++;/某i=i+1某/+=i;/某=+i某/}3.下面程序段的时间复杂度是_______。
=0;for(i=0;i4.下面程序段的时间复杂度是_______。
i=1;While(i<=n)i=i某3;第二章习题参考答案一、判断题1.线性表的逻辑顺序与存储顺序总是一致的。
(ERROR)2.顺序存储的线性表可以按序号随机存取。
(OK)3.顺序表的插入和删除一个数据元素,因为每次操作平均只有近一半的元素需要移动。
第一章绪论一、填空题1.数据是描述客观事物的数、字符以及所有能输入到计算机且能够被计算机程序加工处理的符号集合。
_________是数据的基本单位;___________是数据的最小单位。
通常被计算机加工处理的数据不是孤立无关的,而是彼此之间存在着某种联系,将这种数据间的联系称为________。
2.数据结构进行形式化定义时,可以从逻辑上认为数据结构DS是_________的集合D和D上_________的集合R所构成的二元组:DS=(D,R)。
3.已知某数据结构的二元组形式表示为:A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>}。
则此数据结构属于_____________结构。
4.一个算法的时间复杂度通常用问题规模大小的函数来表示,当一个算法的时间复杂度与问题规模n大小无关时,则表示为__________;成正比关系时,则表示为___________;成对数关系时,则表示为___________;成平方关系时,则表示为__________。
5.数据结构的逻辑结构包括_____________、树型结构和图型结构三种类型,其中树型结构和图型结构合称为_____________;数据结构的存储结构主要包括____________和____________两种类型。
6.线性结构的特点是:第一个结点_______前驱结点,其余结点有且仅有_______个前驱结点;最后一个结点_______后继结点,其余每个结点有且仅有_______个后继结点。
7.树型结构的特点是:根结点没有________结点,其余每个结点有且仅有________个前驱结点;叶子结点_________后继结点,其余结点可以有_________个后继结点。
《数据结构》作业参考答案一、选择题 1. a b 2. c 3. b 4. a,d 5. b 6. d 7. b 8.D 9.D 10.B 11.C 12.C 13. c 14.d 15.a 16.b 17.c18.d 19.c 20.b 21.b 22.c 23.c 24.d 25.d 26.c二、填空题 1.j i i ++2)1( 2.3 43. 2k-1, 2k -1, 2k-2+14. v 1, v 3, v 2, v 4, v 5 5. 46.数据项 7.结点的直接前驱结点, 结点的直接后继结点 8.ST.top= =-19.参加比较的两个字符串长度相同 10.12-h11.120三、算法应用题 1.解答:WPL=4*4+5*4+6*3+7*3+10*3+12*2+18*2 =9*4+23*3+30*2 =36+69+60 =1652.解答:和已知序列对应的二叉树是:3.4.解答:H(key) =key%136110 13761311 10 12采用开放地址法的线性探测再散列方法解决冲突,已知其装填因子32=α,对上表中的关键字序列构造所得哈希表如下:地址 01 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 key 01 14 55 27 68 19 20 84 23 11 10 77 比较次数121431131132在等概率情况下,其查找成功时的平均查找长度是:122312231131134121=+++++++++++=succ ASL5.和已知序列对应的森林如下图示:6.解答:设这8个字母的权重为7,19,2,6,32,3,21,10由上图的哈夫曼树知这8个字母的哈夫曼编码分别为0010,10,00000,0001,01,00001,11,00117.解答:①如图所示的无向带权图的邻接矩阵如下图示:按Prim 算法求得的最小生成树如下图(f)所示(树中结点用粗黑实线表示):假设初始时,树中只有一个顶点,不含有任何一条边,下图(a )~(f)为用Prim 算法求其最小生成树的过程。
习题1一、单项选择题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++;(1) (2n) (n) (3n)5. 算法分析的目的是(1),算法分析的两个主要方面是(2)。
(1) 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. 数据结构作为一门独立的课程出现是在()年。
B.19539. 数据结构只是研究数据的逻辑结构和物理结构,这种观点()。
A.正确B.错误C.前半句对,后半句错D.前半句错,后半句对10. 计算机内部数据处理的基本单位是()。
A.数据B.数据元素C.数据项D.数据库二、填空题1. 数据结构按逻辑结构可分为两大类,分别是______________和_________________。
2. 数据的逻辑结构有四种基本形态,分别是________________、__________________、__________________和__________________。
第六次作业1. 假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题:(1)画出描述折半查找过程的判定树;(2)若查找元素54,需依次与哪些元素比较?(3)若查找元素90,需依次与哪些元素比较?( 4) 假定每个元素的查找概率相等,求查找成功时的平均查找长度。
2.设哈希(Hash)表的地址范围为0〜17,哈希函数为:H( K)= K MOD 16。
K 为关键字,用线性探测法再散列法处理冲突,输入关键字序列:(10, 24, 32, 17, 31, 30, 46, 47, 40, 63, 49)造出Hash表,试回答下列问题:( 1) 画出哈希表的示意图;( 2) 若查找关键字63,需要依次与哪些关键字进行比较?( 3) 若查找关键字60,需要依次与哪些关键字比较?( 4 ) 假定每个关键字的查找概率相等,求查找成功时的平均查找长度。
3.在一棵空的二叉查找树中依次插入关键字序列为12,7,17,11,16,2,13,9,21,4, 请画出所得到的二叉查找树。
4.试写一个判别给定二叉树是否为二叉排序树的算法,设此二叉树以二叉链表作存储结 构。
且树中结点的关键字均不同。
1.假定对有序表:(3, 4, 5, 7,24,30,42, 54,63, 72, 87, 95)进行折半查找,试 回答下列问题:(5) 画出描述折半查找过程的判定树;(6) 若查找元素54,需依次与哪些元素比较?(7) 若查找元素90,需依次与哪些元素比较?(8) 假定每个元素的查找概率相等,求查找成功时的平均查找长度。
解:⑵ 查找元素54,需依次与30, 63, 42, 54 等元素比较;(1)先画出判定树如下(注: mid=?(1+12)/2?=6):42 874 24 54 72 955 63⑶ 查找元素90,需依次与30, 63,87, 95, 72 等元素比较;(4)求ASL之前,需要统计每个元素的查找次数。
第1 章绪论课后习题讲解1. 填空(1) 从逻辑关系上讲,数据结构主要分为()、()、()和()。
(2) 数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。
(3)算法在发生非法操作时可以作出处理的特性称为()。
2. 选择题⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A 线性结构 B 非线性结构 C 存储位置 D 指针⑵假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。
则表示该遗产继承关系的最合适的数据结构应该是()。
A 树 B 图 C 线性表 D 集合3. 判断题(1) 每种数据结构都具备三个基本操作:插入、删除和查找。
第2 章线性表课后习题讲解1. 填空⑵顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是()。
第5个元素的存储地址=第1个元素的存储地址+(5-1)×2=108⑶设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为()。
【解答】p->next=(p->next)->next⑸非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足()。
p->next=head⑹在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是();删除开始结点的操作序列为()。
【解答】s->next =rear->next; rear->next =s; rear =s; q=rear->next->next;rear->next->next=q->next; delete q;2. 选择题⑴线性表的顺序存储结构是一种()的存储结构,线性表的链接存储结构是一种()的存储结构。
第六次作业
1•假定对有序表:(3, 4, 5, 7, 24, 30, 42, 54, 63, 72, 87, 95)进行折半查找,试回答下列问题:
(1)画出描述折半查找过程的判定树;
(2)若查找元素54,需依次与哪些元素比较?
(3)若查找元素90,需依次与哪些元素比较?
(4)假定每个元素的查找概率相等,求查找成功时的平均查找长度。
2. 设哈希(Hash)表的地址范围为0〜17,哈希函数为:H ( K)= K MOD 16。
K为关键字,用线性探测法再散列法处理冲突,输入关键字序列:
(10, 24, 32, 17, 31, 30, 46, 47, 40, 63, 49)
造出Hash表,试回答下列问题:
(1)画出哈希表的示意图;
(2)若查找关键字63,需要依次与哪些关键字进行比较?
(3)若查找关键字60,需要依次与哪些关键字比较?
(4)假定每个关键字的查找概率相等,求查找成功时的平均查找长度。
3. 在一棵空的二叉查找树中依次插入关键字序列为
12, 7, 17, 11, 16, 2, 13, 9, 21, 4,
请画出所得到的二叉查找树。
4. 试写一个判别给定二叉树是否为二叉排序树的算法, 且树中结
点的关键字均不同。
1. 假定对有序表:(3, 4, 5, 7, 24, 30, 42, 54, 63, 72, 87,
95)进行折半查找,试回
答下列问题:
(5)画出描述折半查找过程的判定树;
(6)若查找元素54,需依次与哪些元素比较?
(7)若查找元素90,需依次与哪些元素比较?
(8)假定每个元素的查找概率相等,求查找成功时的平均查找长度。
解:
(1) 先画出判定树如下(注:mid= (1+12)/2 =6):
⑵查找元素54,需依次与30, 63, 42, 54等元素比较;
⑶查找元素90,需依次与30, 63,87, 95, 72等元素比较;
(4)求ASL之前,需要统计每个元素的查找次数。
判定树的前3层共查找1 + 2X 2 + 4
X 3=17 次;
但最后一层未满,不能用8X 4,只能用5X 4=20次,
所以ASL = 1/12 (17 + 20)= 37/12~ 3.08
设此二叉树以二叉链表作存储结构。
2. 设哈希(Hash )表的地址范围为0〜17,哈希函数为:H (K )= K MOD 16。
K为关键字,用线性探测法再散列法处理冲突,输入关键字序列:
(10,24,32,17,31,30,46,47,40,63,49)
造出Hash表,试回答下列问题:
(5)画出哈希表的示意图;
(6)若查找关键字63,需要依次与哪些关键字进行比较?
(7)若查找关键字60,需要依次与哪些关键字比较?
(8)假定每个关键字的查找概率相等,求查找成功时的平均查找长度。
)查找首先要与号单元内容比较,即
然后顺移,与46,47,32,17,63 相比,一共比较了6次!
(3)查找60,首先要与H(60)=60%16=12号单元内容比较,但因为12号单元为空(应当有空标记),所以应当只比较这一次即可。
(4)对于黑色数据元素,各比较1次;共6次;
对红色元素则各不相同,要统计移位的位数。
“63”需要6次,“49”需要3次,“40”需要
2次,“ 46”需要3次,“ 47”需要3次,
所以ASL=1/11 (6+ 2+ 3 X 3) = 17/11=1.5454545454 〜1.55
3. 在一棵空的二叉查找树中依次插入关键字序列为
12,7,17,11,16,2,13,9,21,4,
请画出所得到的二叉查找树。
答:
12 \
7\ / /17\
2丿1 ,16 21
4 9 13
验算方法:用中序遍历应得到排序结果:2,4,7,9,11,12,13,16,17,21
4•试写一个判别给定二叉树是否为二叉排序树的算法,设此二叉树以二叉链表作存储结构。
且树中结点的关键字均不同。
解:注意仔细研究二叉排序树的定义。
易犯的典型错误是按下述思路进行判别:“若一棵非空的二叉树其左、右子树均为二叉排序树,且左子树的根的值小于根结点的值,又根结点的值不大于右子树的根的值,则是二叉排序树”
(即不能只判断左右孩子的情况,还要判断左右孩子与双亲甚至根结点的比值也要遵循(左小右大)原则)。
若要采用递归算法,建议您采用如下的函数首部:
bool BisortTree(BiTree T, BiTree&PRE),其中PRE为指向当前访问结点的前驱的指针。
(或者直接存储前驱的数值,随时与当前根结点比较)
一个漂亮的算法设计如下:
int last=O, flag=1 ; // last是全局变量,用来记录前驱结点值,只要每个结点都比
前驱大就行。
int ls_BSTree(Bitree T) //判断二叉树T是否二叉排序树,是则返回1,否则返回0
{
if(T->lchild &&flag) ls_BSTree(T->lchild);
if(T->data<last) flag=0; //与其中序前驱相比较,flag=0表示当前结点比直接前驱小,则立即返回
last=T->data;
if(T->rchild &&flag) Is_BSTree(T->rchild);
return flag;
}//Is_BSTree。