数据结构DB课后题部分答案
数据结构(C语言版本)课后练习答案的完整版本.doc
数据结构(C语言版本)课后练习答案的完整版本第一章引言5。
选择题:CCBDCA 6。
尝试分析以下程序段的时间复杂性。
(1)o(1)(2)o(m * n)(3)o(N2)(4)o(log3n)(5)因为x已执行n-1n-2.1=n (n-1)/2,执行时间为O(n2)(6)O()第2章线性表1。
多项选择babadbcbdcddac 2。
算法设计问题(6)设计一种算法,通过一次遍历来确定单个链表中具有最大值的节点。
元素类型最大值(链表L ){如果(下一个==空)返回空;pmax=1-下一个;//假设第一个节点中的数据具有最大值p=L-下一个-下一个;同时(p!=NULL ){//如果在下一个节点处存在if(p-数据pmax-数据)pmax=p;p=p-下一个;}返回pmax-数据;(7)设计一种算法,通过遍历一次来反转链表中所有节点的链接方向,并且仍然使用原表的存储空间。
空逆(链表L) {//逆单个链表L p=L-头节点的下一个;下一个=空;而(p){ q=p-next;//q指向*p=l-next 的下一个p-next;l-next=p;//*p插入在头节点p=q之后;}}(10)已知长度n的线性表A采用顺序存储结构。
请编写一个时间复杂度为0(n)和空间复杂度为0(1)的算法,删除线性表中所有有值项的数据元素。
[主题分析]删除线性表中按顺序存储的元素通常涉及一系列元素的移动(删除第I个元素,并按顺序向前移动第I到第N个元素)。
本主题要求删除线性表中项目值为的所有数据元素,并且不要求元素之间的相对位置保持不变。
因此,可以考虑设置两个指针(i=1,j=n)从两端移到中间。
当遇到带有值项的数据元素时,右端元素将直接移动到带有值项的数据元素的位置。
虚删除(元素类型A[),整数n)A是一个有n个元素的一维数组。
此算法删除值为项的中的所有元素。
{ I=1;j=n。
∑设置数组的低端和高端指针(下标)。
同时(不精确;r=p;//让r 作为指针,而(q!=null){ if(q-data data)r=q;q:=q-next。
数据结构教材课后习题及参考答案习题 (10)[3页]
习题6一.填空题1.树中除根结点外,其他结点有且只有个直接前驱结点,但可以有个直接后继结点。
2.树中结点的度,是指结点拥有的个数;一棵具有n个结点的树,该树中所有结点的度数之和为。
3.深度为h的完全二叉树至少有个结点,至多有个结点,若按层序从1开始编号,则编号最小的叶子结点的编号是。
5.将一棵完全二叉树按层序从1进行编号,对编号为i的结点,如果有左孩子,则左孩子的编号应该是;如果有右孩子,则右孩子的编号应该是。
6.一棵完全二叉树有1001个结点,其深度是,叶子结点个数是。
78.树的先根遍历序列与其对应二叉树的遍历序列相同,树的后根遍历序列与其对应二叉树的遍历序列相同。
9.若二叉树共有n个结点,采用线索链表存储其线索二叉树,那么在所有存储结点里,一共有个指针域,其中有个指针是指向其孩子结点的,个指针是指向其前驱后继结点的。
指向前驱后继结点的指针称为。
10.哈夫曼树又称。
它是n个带权叶子结点构成的所有二叉树中,带权路径长度的二叉树。
11.哈夫曼树中,权值较大的叶结点一定离根结点。
由n个带权值的叶结点生成的哈夫曼树中共有个结点,其中有个分支结点。
12.哈夫曼树中不存在度为的结点。
二.选择题1.有关二叉树下列说法正确的是()A.二叉树的度为2 B.一棵二叉树的度可以小于2C.二叉树中至少有一个结点的度为2 D.二叉树中任何一个结点的度都为2 2.二叉树的第i层上最多含有结点数为()A.2i B.2i-1-1 C.2i-1D.2i-13.一棵具有1025个结点的二叉树的高度为( )。
A.11 B.10 C.11至1025之间D.10至1024之间4.一棵高度为5的二叉树,其结点总数为()。
A.6~17 B.5~16 C.6~32 D.5~315.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点的个数是( )。
A.9 B.11 C.15 D.不能确定6.一棵完全二叉树具有600个结点,则它有( ) 个度为1的结点。
数据结构课后习题及答案
填空题(10 * 1’ = 10’)一、概念题2.2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。
2.3.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。
2.6.带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。
3.6.循环队列的引入,目的是为了克服假溢出。
4.2.长度为0的字符串称为空串。
4.5.组成串的数据元素只能是字符。
4.8.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。
7.2.为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。
5.7.广义表的深度是广义表中括号的重数7.8.有向图G可拓扑排序的判别条件是有无回路。
7.9.若要求一个稠密图的最小生成树,最好用Prim算法求解。
8.8.直接定址法法构造的哈希函数肯定不会发生冲突。
9.2.排序算法所花费的时间,通常用在数据的比较和交换两大操作。
1.1.通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。
1.2.对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。
1.3.存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。
1.4.抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。
1.5.一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。
2.8.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s->prior= p->prior; s->next= p; p->prior- next= s; p->prior= s;。
2.9.在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。
数据库课后习题答案
数据库课后习题答案第一章1.数据(DB):数据实际上是描述事物的符号纪录。
2.数据库: 数据库实际上是长期存储在计算机内的有组织的、可共享的数据集合。
3.从文件系统的视角上看去,文件是无结构的,文件只是一个字节流,因此,我们经常把文件叫做流式文件,实际上文件的数据是有结构的,数据的结构需要程序员通过编写程序来建立和维护。
4.数据库应用可以分为两大类:联机事务处理(OLTP),联机分析处理(OLAP).联机事务处理解决了组织结构业务自动化问题,而联机分析处理帮助管理层更好的分析组织结构的运站情况。
5. 数据库管理系统(DBMS):数据库管理系统是一类重要的软件,由一组程序组成。
其主要功能是完成对数据库的定义、数据操作。
提供给用户一个简明的接口,实现事务处理等。
6.数据库管理系统的基本功能:数据的定义功能数据操作功能数据库的运行和管理数据库的建立和维护功能7.数据库管理系统由两大部分组成:查询处理器存储管理器8.层次结构:应用层语言翻译层数据存取层数据存储层操作系统数据库9. 数据库系统:数据库系统是基于数据库的计算机应用的系统,有四部分组成数据库数据管理系统应用系统用户。
10. 数据库管理员的职责:(1)决定数据库中要存储的数据及数据结构(2)决定数据库的存储结构和存取策略(3)保证数据的安全性和完整性(4)监控数据库的使用和运行(5)数据库的改进和重组重构11.数据模型的三要素:数据结构数据操作完整性约束12. 数据结构是所研究的对象的类型的集合,这些对象是数据库的组成成分,他们包含两类:一类是与数据之间联系有关的对象。
一类是与数据之间联系有关的对象。
13. 数据操作:数据库主要有检索和更新(插入、删除、修改)两大类操作。
14.在关系模型中任何关系都要满足实体完整性和参照完整性。
15.三种数据模型:概念模型逻辑模型物理模型逻辑模型中有:层次模型网状模型关系模型面向对象模型对象关系模型其中层次模型和网状模型统称为非关系模型。
数据库课后习题(第一至四章)
第一章1.1 名词解释(1) DB:即数据库(Database),是统一管理的相关数据的集合。
DB能为各种用户共享,具有最小冗余度,数据间联系密切,而又有较高的数据独立性。
(2) DBMS:即数据库管理系统(Database Management System),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。
DBMS总是基于某种数据模型,可以分为层次型、网状型、关系型、面向对象型DBMS。
(3) DBS:即数据库系统(Database System),是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,即采用了数据库技术的计算机系统。
(4) 1:1联系:如果实体集E1中的每个实体最多只能和实体集E2中的一个实体有联系,反之亦然,那么实体集E1对E2的联系称为“一对一联系”,记为“1:1”。
(5) 1:N联系:如果实体集E1中每个实体与实体集E2中任意个(零个或多个)实体有联系,而E2中每个实体至多和E1中的一个实体有联系,那么E1对E2的联系是“一对多联系”,记为“1:N”。
(6) M:N联系:如果实体集E1中每个实体与实体集E2中任意个(零个或多个)实体有联系,反之亦然,那么E1对E2的联系是“多对多联系”,记为“M:N”。
(7) 数据模型:模型是对现实世界的抽象。
在数据库技术中,表示实体类型及实体类型间联系的模型称为“数据模型”。
它可分为两种类型:概念数据模型和结构数据模型。
(8) 概念数据模型:是独门于计算机系统的模型,完全不涉及信息在系统中的表示,只是用来描述某个特定组织所关心的信息结构。
(9) 结构数据模型:是直接面向数据库的逻辑结构,是现实世界的第二层抽象。
这类模型涉及到计算机系统和数据库管理系统,所以称为“结构数据模型”。
结构数据模型应包含:数据结构、数据操作、数据完整性约束三部分。
(完整版) 《数据结构》教材课后习题+答案
第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
3.简述逻辑结构的四种基本关系并画出它们的关系图。
4.存储结构由哪两种基本的存储方法实现?5.选择题(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.栈6.试分析下面各程序段的时间复杂度。
(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
(完整版)数据库系统原理与设计(第2版)课后习题详细答案
数据库系统原理与设计习题集第一章绪论一、选择题1. DBS是采用了数据库技术的计算机系统,DBS是一个集合体,包含数据库、计算机硬件、软件和()。
A. 系统分析员B. 程序员C. 数据库管理员D. 操作员2. 数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是()。
A. DBS包括DB和DBMSB. DBMS包括DB和DBSC. DB包括DBS和DBMSD. DBS就是DB,也就是DBMS3. 下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是()。
I.人工管理阶段II.文件系统阶段III.数据库阶段A. I 和IIB. 只有IIC. II 和IIID. 只有I4. 下列四项中,不属于数据库系统特点的是()。
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.下述()不是DBA数据库管理员的职责。
A.完整性约束说明B. 定义数据库模式C.数据库安全D. 数据库管理系统设计选择题答案:(1) C (2) A (3) D (4) C (5) B(6) A (7) C (8) A (9) C (10) D二、简答题1.试述数据、数据库、数据库系统、数据库管理系统的概念。
《数据结构》教材课后习题+答案
《数据结构》教材课后习题+答案数据结构第一章介绍数据结构是计算机科学中重要的概念,它涉及到组织和存储数据的方法和技术。
数据结构的选择对于算法的效率有着重要的影响。
本教材为读者提供了丰富的课后习题,以帮助读者巩固所学知识并提高解决问题的能力。
下面是一些选定的习题及其答案,供读者参考。
第二章线性表习题一:给定一个顺序表L,编写一个算法,实现将其中元素逆置的功能。
答案一:算法思路:1. 初始化两个指针i和j,分别指向线性表L的首尾两个元素2. 对于L中的每一个元素,通过交换i和j所指向的元素,将元素逆置3. 当i>=j时,停止逆置算法实现:```pythondef reverse_list(L):i, j = 0, len(L)-1while i < j:L[i], L[j] = L[j], L[i]i += 1j -= 1```习题二:给定两个线性表A和B,编写一个算法,将线性表B中的元素按顺序插入到线性表A中。
答案二:算法思路:1. 遍历线性表B中的每一个元素2. 将B中的元素依次插入到A的末尾算法实现:```pythondef merge_lists(A, B):for element in B:A.append(element)```第三章栈和队列习题一:编写一个算法,判断一个表达式中的括号是否匹配。
表达式中的括号包括小括号"()"、中括号"[]"和大括号"{}"。
答案一:算法思路:1. 遍历表达式中的每一个字符2. 当遇到左括号时,将其推入栈中3. 当遇到右括号时,判断栈顶元素是否与其匹配4. 当遇到其他字符时,继续遍历下一个字符5. 最后判断栈是否为空,若为空则表示括号匹配算法实现:```pythondef is_matching(expression):stack = []for char in expression:if char in "([{":stack.append(char)elif char in ")]}":if not stack:return Falseelif (char == ")" and stack[-1] == "(") or (char == "]" and stack[-1] == "[") or (char == "}" and stack[-1] == "{"):stack.pop()else:return Falsereturn not stack```习题二:利用两个栈实现一个队列。
《数据结构》课后习题答案(第2版)
1 填空题(1)数据元素(2)数据项数据元素(3)集合线性结构树结构图结构(4)顺序存储链接存储数据元素数据元素之间的关系(5)零或多个输入一个或多个输出有穷性确定性可行性(6)自然语言程序设计语言流程图伪代码,伪代码(7)问题规模(8)O(1) O(nlog2n)2 选择题(1)C D (2)B (3) B (4) A (5) D (6)A (7) C (8) C E3 判断题×××√×第二章1 填空题(1)表长一半表长位置(2)108(3)p->next=(p->next)->next;(4)运算方便(5)p->next=head;(6)s->next=rear->next rear->next=s; rear=s;q=rear->next->next; rear->next->next=q->next; delete q;(7)O(1) O(n)(8)循环单链表循环双链表双链表2 选择题(1) A B (2) D (3) B (4) A (5) A (6) D(7) B(8) B(9) C(10)B(11)B(12)D(13)A(14)A3 判断题×××××1 填空题(1)1003H(2)顺序栈和链栈top=-1或top==NULL top==数组长度或内存无可用空间(3)栈(4)abc+*d-(5)后进先出先进先出操作位置受限(6)假溢出(7)(rear-front+n)% n(8)O(1) O(n)2 选择题(1) C (2) D (3) C (4) B(5) B(6) B(7) D(8) A(9) C3 判断题×√√××第四章1 填空题(1)数据元素的类型是字符(2)长度相等且对应位置字符相等(3)存取修改顺序存储(4)1140(5)d+41(6)三元组顺序表十字链表2 选择题(1) B (2) D E K (3) B (4) C(5) D(6) C(7) D3 判断题×√√××1 填空题(1)有且仅有一个互不相交(2)度孩子双亲(3)2i-1(n+1)/2 (n-1)/2 (4)2h-1 2h-1(5)2k-1(6)50(7)12(8)CDBGFEA (9)2n n-1 n+1 (10)n n-12 选择题(1) D (2) D (3) B (4) C (5) B C (6) D(7) A(8) A B(9) D A(10)B(11)B(12)C(13)D(14)C3 判断题×√×√×第六章1 填空题(1)0 n(n-1)/2 0 n(n-1) (2)自身(3)邻接矩阵邻接表(4)O(n+e)(5)第j列所有元素之和(6)出度(7)前序栈层序队列(8)O(n2) O(elog2e) (9)回路(10)v i v j v k2 选择题(1) c (2) A G (3) C (4) B (5) D (6) C F(7) B(8) D(9) A(10)A(11)A(12)C(13)A(14)C C F(15)B3 判断题√√××××√×1 填空题(1)顺序存储和链接存储顺序存储按照关键码有序(2) 1 ,7(3)8,59/15(4) 4(5)62(6)开放定址法拉链法(7)散列查找(8)通过关键码计算记录的存储地址并进行一定的比较2 选择题(1) B (2) D B (3) A D (4) D (5) A(6) C(7) C(8) B(9) D(10)A(11)C(12)D3 判断题×××××第八章1 填空题(1)查找(2)正序n-1 反序n(n-1)/2 (3) 3(4) 3(5)O(nlog2n) O(n)(6)n-1(7)50(8)602 选择题(1) C (2) C (3) C (4) B (5) A (6) A(7) B C B(8) C(9) D(10)A D(11)B(12)D,B,E,A,C(13)C,A,D,B,B,D,F(14)C(15)D3 判断题×√××√。
数据结构DB课后题部分答案
数据结构DB课后题部分答案P175:5. 设有关系模式R(A,B,C,D),函数依赖F={A→C, C→A, B→AC, D→AC,BD→A }1)求R的所有候选键。
2)求出F的最小函数依赖集Fmin。
3)根据函数依赖关系,确定关系模式R属于第几范式。
4)将R分解为3NF,并保持无损连接性和函数依赖性。
答:1)属性分类为:L类:B,D ; LR类:A,C; R类:无; N类:无因为(BD)+=ABCD ,所以BD是唯一候选键.2)●函数依赖F={A→C, C→A, B→AC, D→AC, BD→A }右部分解为单属性为F={A→C, C→A, B→A, B→C, D→A, D→C, BD→A }●因为B+=ABC,所欲BD→A,D为左部多余的属性.将D去掉,则F={A→C, C→A, B→A, B→C, D→A, D→C }●冗余函数依赖: 因为B+=ABC,所以B→A多余,去掉.因为D+=ACD,所以D→A多余,去掉.所以Fmi n={A→C, C→A, B→C, D→C }4)根据算法4.6,以及Fmin,F中没有X→Y,XY=R的函数依赖,也没有属性在F的函数依赖中左右都无关。
所以将Fmin中的各个函数依赖单独构成一个关系模式,对于Fmin中每一个函数依赖:A→C:表中数据不改变;C→A:将A中所有b给为a1;表中没有都是a的行,所以不是无损连接的。
因此根据算法 4.7,将候选键作为一个关系模式加入到ρ中,所以结果为ρ={AC,BC,DC,BD}6.设有关系模式R(A,B,C,D),函数依赖F={A→C, C→A, B→AC, D→AC }1)求(AD)+,B+。
2)求出R 的所有候选键。
3)求出F的最小函数依赖集Fmin。
4)根据函数依赖关系,确定关系模式R属于第几范式。
5)将R分解为3NF,并保持无损连接性和函数依赖性6)略答:1) (AD)+=ACD, B+=ABC2) 属性分类为:L类:B,D ; LR类:A,C; R类:无; N类:无因为(BD)+=ABCD ,所以BD是唯一候选键.3)(1)函数依赖F={A→C, C→A, B→AC, D→AC }右部分解为单属性为F={A→C, C→A, B→A, B→C, D→A, D→C }(2)无左部多余的属性.(3)冗余函数依赖: 因为B+=ABC,所以B→A多余,去掉.因为D+=ACD,所以D→A多余,去掉.所以Fmin={A→C, C→A, B→C, D→C }4)首先R是1NF,因为BD为候选码,另B→C , BD→C,所以,存在非主属性对码的部分函数依赖,所以R是1NF,不是2NF.5)同第5题。
数据结构(c语言版)课后习题答案完整版
第1章 绪论5.选择题:CCBDCA6.试分析下面各程序段的时间复杂度。
.试分析下面各程序段的时间复杂度。
(1)O (1) (2)O (m*n ) (3)O (n 2) (4)O (log 3n )(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O (n 2) (6)O(n )第2章 线性表1.选择题.选择题babadbcabdcddac 2.算法设计题.算法设计题(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。
)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。
ElemType Max (LinkList L ){if(L->next==NULL) return NULL; pmax=L->next; //假定第一个结点中数据具有最大值假定第一个结点中数据具有最大值 p=L->next->next;while(p != NULL ){//如果下一个结点存在if(p->data > pmax->data) pmax=p; p=p->next; }return pmax->data;(7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。
的存储空间。
void inverse(LinkList &L) { // 逆置带头结点的单链表 Lp=L->next; L->next=NULL; while ( p) {q=p->next; // q 指向*p 的后继 p->next=L->next;L->next=p; // *p 插入在头结点之后 p = q; }}、空间(n)、空间(10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)的数据元素。
复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。
数据结构课后习题答案-完整版
数据结构课后习题答案-完整版下面是《数据结构课后习题答案-完整版》的内容:---第一章:数组1. 题目:给定一个整数数组,判断是否存在两个元素之和等于目标值。
答案:使用双指针法,首先将数组排序,然后设置左指针指向数组头部,右指针指向数组尾部。
如果左指针和右指针指向的元素之和小于目标值,则左指针右移;如果大于目标值,则右指针左移;如果等于目标值,则找到了两个元素之和等于目标值的情况。
2. 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数的下标。
答案:使用哈希表,在遍历数组的过程中,将每个元素的值和下标存储在哈希表中。
遍历到当前元素时,检查目标值与当前元素的差值是否在哈希表中,如果存在,则找到了两个数的下标。
---第二章:链表1. 题目:给定一个链表,判断链表中是否存在环。
答案:使用快慢指针法,定义两个指针,一个指针每次向前移动一个节点,另一个指针每次向前移动两个节点。
如果存在环,则两个指针必定会相遇。
2. 题目:给定一个链表,删除链表的倒数第N个节点。
答案:使用双指针法,定义两个指针,一个指针先移动N个节点,然后两个指针同时向前移动,直到第一个指针到达链表尾部。
此时第二个指针指向的节点即为要删除的节点。
---第三章:栈和队列1. 题目:设计一个栈,使得可以在常数时间内获取栈中的最小元素。
答案:使用辅助栈来保存当前栈中的最小元素。
每次压栈操作时,将当前元素与辅助栈的栈顶元素比较,只有当前元素较小才将其压入辅助栈。
2. 题目:设计一个队列,使得可以在常数时间内获取队列中的最大元素。
答案:使用双端队列来保存当前队列中的最大值。
每次入队操作时,将当前元素与双端队列的末尾元素比较,只有当前元素较大才将其压入双端队列。
---第四章:树和二叉树1. 题目:给定一个二叉树,判断它是否是平衡二叉树。
答案:通过递归遍历二叉树的每个节点,计算每个节点的左子树高度和右子树高度的差值。
如果任意节点的差值大于1,则该二叉树不是平衡二叉树。
数据结构课后习题答案
第1章绪论一、基础知识题1.1 简述下列概念数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。
【解答】数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。
数据元素是数据的基本单位。
在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。
数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种总体描述。
每一种计算机程序设计语言都定义有自己的数据类型。
“数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。
作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。
而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。
数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。
数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则依赖于存储结构。
数据结构在计算机中的表示称为物理结构,又称存储结构。
是逻辑结构在存储器中的映像,包括数据元素的表示和关系的表示。
逻辑结构与计算机无关。
算法是对特定问题求解步骤的一种描述,是指令的有限序列。
其中每一条指令表示一个或多个操作。
一个算法应该具有下列特性:有穷性、确定性、可行性、输入和输出。
1.2数据的逻辑结构分哪几种,为什么说逻辑结构是数据组织的主要方面?【解答】数据的逻辑结构分为线性结构和非线性结构。
(也可以分为集合、线性结构、树形结构和图形即网状结构)。
逻辑结构是数据组织的某种“本质性”的东西:(1)逻辑结构与数据元素本身的形式、内容无关。
(2)逻辑结构与数据元素的相对位置无关。
(3)逻辑结构与所含数据元素的个数无关。
(完整版)数据结构课后习题答案
第1章绪论1 •简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
在有些情况下,数据元素也称为元素、结点、记录等。
数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合N={0,士1,士2,…},字母字符数据对象是集合C={ ‘ A', ‘ B…,‘ Z,‘ a'b ',…,‘ z ' },学生基本信息表也可是一个数据对象。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构:数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。
2 •试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
答案:例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。
每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。
数据结构课后习题参考答案完整版资料
5. 选择题:CCBDCA6. 试分析下面各程序段的时间复杂度。
(1) O( 1)(2) O( m*n)(3) O( n2)(4) O (log 3n)(5) ......................................................... 因为x++共执行了n-1+ n-2+ +仁n(n-1)/2,所以执行时间为O ( n2)(6) 0( .. n )第2章线性表1•选择题babadbcabdcddac2•算法设计题(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。
ElemType Max (Li nkList L ){if(L->n ext==NULL) return NULL;pmax=L->n ext;法设计题(2)回文是指正读反读均相同的字符序列,如" abba"和"abdba”均是回文,但"good”不是回文。
试写一个算法判定给定的字符向量是否为回文。
(提示:将一半字符入栈)?根据提示,算法可设计为:合应用题(1)已知模式串t= ‘ abcaabbabcab '写出用KMP法求得的每个字符对应的next和nextval函数值。
(3)数组A中,每个元素A[i,j]的长度均为32个二进位,行下标从-1到9,列下标从1到11,从首地址S 开始连续存放主存储器中,主存储器字长为16位。
求:①存放该数组所需多少单元?②存放数组第4列所有元素至少需多少单元?③数组按行存放时,元素A[7,4]的起始地址是多少?④数组按列存放时,元素A[4,7]的起始地址是多少?每个元素32个二进制位,主存字长16位,故每个元素占2个字长,行下标可平移至1到11。
(1) 242 (2) 22 (3) s+182 (4) s+142⑷请将香蕉banana用工具H( ) —Head( ),T( ) —Tail() 从L中取出。
数据结构课后答案(施伯乐)完整版
第1章数据库概论1.1 名词解释·逻辑数据:指程序员或用户用以操作的数据形式。
·物理数据:指存储设备上存储的数据。
·联系的元数:与一个联系有关的实体集个数,称为联系的元数。
·1:1联系:如果实体集E1中每个实体至多和实体集E2中的一个实体有联系,反之亦然,那么E1和E2的联系称为“1:1联系”。
·1:N联系:如果实体集E1中每个实体可以与实体集E2中任意个(零个或多个)实体有联系,而E2中每个实体至多和E1中一个实体有联系,那么E1和E2的联系是“1:N联系”。
·M:N联系:如果实体集E1中每个实体可以与实体集E2中任意个(零个或多个)实体有联系,反之亦然,那么E1和E2的联系称为“M:N联系”。
·数据模型:能表示实体类型及实体间联系的模型称为“数据模型”。
·概念数据模型:独立于计算机系统、完全不涉及信息在计算机中的表示、反映企业组织所关心的信息结构的数据模型。
·结构数据模型(或逻辑数据模型):与DBMS有关的,直接面向DB的逻辑结构、从计算机观点对数据建模的数据模型。
·层次模型:用树型(层次)结构表示实体类型及实体间联系的数据模型称为层次模型。
·网状模型:用有向图结构表示实体类型及实体间联系的数据模型称为网状模型。
·关系模型:用二维表格表达实体集的数据模型。
·外模式:是用户用到的那部分数据的描述。
·概念模式:数据库中全部数据的整体逻辑结构的描述。
·内模式:DB在物理存储方面的描述。
·外模式/模式映象:用于定义外模式和概念模式之间数据结构的对应性。
·模式/内模式映象:用于定义概念模式和内模式之间数据结构的对应性。
·数据独立性:应用程序和DB的数据结构之间相互独立,不受影响。
·物理数据独立性:在DB的物理结构改变时,尽量不影响应用程序。
数据结构课后习题及答案
填空题(10 * 1’ = 10’)一、概念题2.2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。
2.3.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。
2.6.带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。
3.6.循环队列的引入,目的是为了克服假溢出。
4.2.长度为0的字符串称为空串。
4.5.组成串的数据元素只能是字符。
4.8.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。
7.2.为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。
5.7.广义表的深度是广义表中括号的重数7.8.有向图G可拓扑排序的判别条件是有无回路。
7.9.若要求一个稠密图的最小生成树,最好用Prim算法求解。
8.8.直接定址法法构造的哈希函数肯定不会发生冲突。
9.2.排序算法所花费的时间,通常用在数据的比较和交换两大操作。
1.1.通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。
1.2.对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。
1.3.存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。
1.4.抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。
1.5.一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。
2.8.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s->prior= p->prior; s->next= p; p->prior- next= s; p->prior= s;。
2.9.在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P175:
5. 设有关系模式R(A,B,C,D),函数依赖F={A→C, C→A, B→AC, D→AC,BD→A }
1)求R的所有候选键。
2)求出F的最小函数依赖集Fmin。
3)根据函数依赖关系,确定关系模式R属于第几范式。
4)将R分解为3NF,并保持无损连接性和函数依赖性。
答:1)属性分类为:
L类:B,D ; LR类:A,C; R类:无; N类:无
因为(BD)+=ABCD ,所以BD是唯一候选键.
2)
●函数依赖F={A→C, C→A, B→AC, D→AC, BD→A }右部分解为单属性为
F={A→C, C→A, B→A, B→C, D→A, D→C, BD→A }
●因为B+=ABC,所欲BD→A,D为左部多余的属性.将D去掉,则
F={A→C, C→A, B→A, B→C, D→A, D→C }
●冗余函数依赖: 因为B+=ABC,所以B→A多余,去掉.
因为D+=ACD,所以D→A多余,去掉.
所以Fmin={A→C, C→A, B→C, D→C }
4)根据算法4.6,以及Fmin,F中没有X→Y,XY=R的函数依赖,也没有属性在F的函数依赖中左右都无关。
所以将Fmin中的各个函数依赖单独构成一个关系模式,
对于Fmin中每一个函数依赖:
A→C:表中数据不改变;
C→A:将A中所有b给为a1;
表中没有都是a的行,所以不是无损连接的。
因此根据算法 4.7,将候选键作为一个关系模式加入到ρ中,所以结果为ρ={AC,BC,DC,BD}
6.设有关系模式R(A,B,C,D),函数依赖F={A→C, C→A, B→AC, D→AC }
1)求(AD)+,B+。
2)求出R 的所有候选键。
3)求出F的最小函数依赖集Fmin。
4)根据函数依赖关系,确定关系模式R属于第几范式。
5)将R分解为3NF,并保持无损连接性和函数依赖性
6)略
答:
1) (AD)+=ACD, B+=ABC
2) 属性分类为:
L类:B,D ; LR类:A,C; R类:无; N类:无
因为(BD)+=ABCD ,所以BD是唯一候选键.
3)(1)函数依赖F={A→C, C→A, B→AC, D→AC }右部分解为单属性为
F={A→C, C→A, B→A, B→C, D→A, D→C }
(2)无左部多余的属性.
(3)冗余函数依赖: 因为B+=ABC,所以B→A多余,去掉.
因为D+=ACD,所以D→A多余,去掉.
所以Fmin={A→C, C→A, B→C, D→C }
4)首先R是1NF,因为BD为候选码,另B→C , BD→C,所以,存在非主属性对码的
部分函数依赖,所以R是1NF,不是2NF.
5)同第5题。
8.判断关系模式是否保持无损连接性。
-分析方法同第5题中的(4)
(1)
分析……
所以没有全是a的行,所以不保持无损连接。
注意:Y→U,将U列的b31修改为b21后,U列将出现相等的行,所以需要重新对Fmin中的所有函数依赖再进行一次数据修改。
直到不能修改为止。
(3)
修改后的表格数据为:
所以没有全是a的行,所以不保持无损连接。
P176:
17题:求Fmin,
●函数依赖F={ E→G,G→E, F→EG, H→EG, FH→E }右部分解为单属性为
F={ E→G,G→E, F→E, F→G,H→E,H→G, FH→E }
●对于FH→E,因为H+=HEG,所以FH→E,F为左部多余的属性.将F去掉,
则F={ E→G,G→E, F→E, F→G,H→E,H→G}
●冗余函数依赖: 因为对F→E ,F+=FGE,所以F→E多余,去掉.
因为H→E ,H+=HGE,所以H→E多余,去掉.
所以Fmin={ E→G,G→E, F→G ,H→G }
18题:(1)求所有候选键
属性分类为:
L类:C, E ; LR类:A, R类:B,D,P; N类:无
因为(CE)+=CEPDAB ,所以CE是唯一候选键.
P298页:存储过程和触发器
4.自定义存储过程
(1)CREATE PROCEDURE Insert_Student(
@s_no char(6),
@class_no char(6),
@s_name varchar(10),
@s_sex char(2),
@s_birthday datetime)
as insert into student(s_no,class_no,s_name,s_sex,s_birthday)
values(@s_no,@class_no,@s_name,@s_sex,@s_birthday)
(2)EXEC Insert_Student @s_no=’123456’, @class_no=’js9901’,@s_name=’张三’,@s_sex=’男’,@s_birthday=’1981/01/02’
(3) CREATE PROCEDURE Insert_Course(
@ course_no char(6),
@ course_name char(20),
@ score numeric(6,2)=2
)
as insert into course (course_no, course_name, score)
values(@course_no, @course_name, @score)
(4) a:EXEC Insert_Course @course_no=’010001’, @course_name=’DB’, @score=4
b: EXEC Insert_Course @course_no=’010002’, @course_name=’VB’
(5) CREATE PROCEDURE Query_Student(
@ s_no char(6),
)
as select s_name,class_no,s_sex,s_birthday from student where s_no=@s_no
(6)EXEC Query_Student @s_no=’001101’
5 CREATE TRIGGER Display_trigger on student after insert as select * from student。