数据结构1-4章习题答案
- 格式:docx
- 大小:54.23 KB
- 文档页数:26
第1章概论习题参考解答一、填空题1、数据的逻辑结构是数据元素之间的逻辑关系,通常有下列4类:()、()、()、()。
【答】集合、线性结构、树型结构和图状结构。
2、数据的存储结构是数据在计算机存储器里的表示,主要有4种基本存储方法:()、()、()、()。
【答】顺序存储方法、链接存储方法、索引存储方法和散列存储方法。
二、选择题1、一个算法必须在执行有穷步之后结束,这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】B。
2、算法的每一步,必须有确切的定义。
也就是说,对于每步需要执行的动作必须严格、清楚地给出规定。
这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】C。
3、算法原则上都是能够由机器或人完成的。
整个算法好像是一个解决问题的“工作序列”,其中的每一步都是我们力所能及的一个动作。
这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】D。
三、简答题1、算法与程序有何异同?【答】尽管算法的含义与程序非常相似,但两者还是有区别的。
首先,一个程序不一定满足有穷性,因此它不一定是算法。
例如,系统程序中的操作系统,只要整个系统不遭受破坏,它就永远不会停止,即使没有作业要处理,它仍处于等待循环中,以待一个新作业的进入。
因此操作系统就不是一个算法。
其次,程序中的指令必须是计算机可以执行的,而算法中的指令却无此限止。
如果一个算法采用机器可执行的语言来书写,那么它就是一个程序。
2、什么是数据结构?试举一个简单的例子说明。
【答】数据结构是指数据对象以及该数据对象集合中的数据元素之间的相互关系(即数据元素的组织形式)。
例如,队列的逻辑结构是线性表(先进先出);队列在计算机中既可以采用顺序存储也可以采用链式存储;对队列可进行删除、插入数据元素以及判断是否为空队列、将队列置空等操作。
3、什么是数据的逻辑结构?什么是数据的存储结构?【答】数据元素之间的逻辑关系,也称为数据的逻辑结构。
文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.第1章 绪论1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。
解:数据是对客观事物的符号表示。
在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据对象是性质相同的数据元素的集合,是数据的一个子集。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
存储结构是数据结构在计算机中的表示。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。
是对一般数据类型的扩展。
1.2 填空题:1.常见的数据结构有__结构,_____结构,____结构等三种。
2.常见的存储结构有_________结构,______结构等两种。
3.数据的基本单位是____,它在计算机中是作为一个整体来处理的。
4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,______和_____。
5.《数据结构》课程讨论的主要内容是数据的逻辑结构、存储结构和________。
1.2设有数据结构(D,R),其中{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =试按图论中图的画法惯例画出其逻辑结构图。
解:1.3设有以下三个函数:()10002124++=n n n f ,()3450015n n n g+=,()n n n n h log 5005.3+=请判断以下断言正确与否:(1) f(n)是O(g(n)) (2) h(n)是O(f(n)) (3) g(n)是O(h(n)) (4) h(n)是O(n 3.5) (5) h(n)是O(nlogn)解:(1)对 (2)错 (3)错 (4)对 (5)错第二章序列2.1 描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。
02272《数据结构》国开形考任务(1-4)试题答案集任务1:数据结构基础1. 数据结构是指数据元素之间的关系和操作的组织方式。
它包括数据的逻辑结构、数据的存储结构以及对数据的操作等内容。
2. 数据结构的逻辑结构包括线性结构、树形结构、图形结构等。
3. 数据结构的存储结构包括顺序存储结构和链式存储结构。
4. 数据结构的操作包括插入、删除、查找、修改等。
5. 数据结构的选择应根据具体应用需求来确定,需要考虑数据的规模、操作的效率、存储空间的利用等因素。
任务2:线性表1. 线性表是一种最基本的数据结构,它包括顺序表和链表两种存储结构。
2. 顺序表是用一段连续的存储空间存储线性表的元素,可以通过下标直接访问元素。
顺序表的插入和删除操作需要移动其他元素,效率较低。
3. 链表是通过节点之间的指针来连接元素的,可以实现灵活的插入和删除操作。
链表的缺点是访问元素需要从头节点开始遍历,效率较低。
4. 单链表是最简单的链表结构,每个节点包含数据和指向下一个节点的指针。
5. 双链表在单链表的基础上增加了一个指向前一个节点的指针,可以实现双向遍历。
任务3:树和二叉树1. 树是一种非线性的数据结构,它包括节点和边组成。
节点之间存在一对多的关系。
2. 二叉树是一种特殊的树结构,每个节点最多有两个子节点。
3. 二叉树的遍历方式包括前序遍历、中序遍历和后序遍历。
4. 前序遍历先访问根节点,然后依次访问左子树和右子树。
5. 中序遍历先访问左子树,然后访问根节点,最后访问右子树。
6. 后序遍历先访问左子树,然后访问右子树,最后访问根节点。
任务4:图的表示和遍历1. 图是一种由节点和边组成的数据结构,节点之间存在多对多的关系。
2. 图的表示方式有邻接矩阵和邻接表两种。
3. 邻接矩阵是一个二维数组,用于表示节点之间的连接关系。
4. 邻接表是由链表构成的数组,每个节点的链表存储与其相邻的节点。
5. 图的遍历方式包括深度优先搜索和广度优先搜索。
《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)【第一章绪论】1. 数据结构是计算机科学中的重要基础知识,它研究的是如何组织和存储数据,以及如何通过高效的算法进行数据的操作和处理。
本章主要介绍了数据结构的基本概念和发展历程。
【第二章线性表】1. 线性表是由一组数据元素组成的数据结构,它的特点是元素之间存在着一对一的线性关系。
本章主要介绍了线性表的顺序存储结构和链式存储结构,以及它们的操作和应用。
【第三章栈与队列】1. 栈是一种特殊的线性表,它的特点是只能在表的一端进行插入和删除操作。
本章主要介绍了栈的顺序存储结构和链式存储结构,以及栈的应用场景。
2. 队列也是一种特殊的线性表,它的特点是只能在表的一端进行插入操作,而在另一端进行删除操作。
本章主要介绍了队列的顺序存储结构和链式存储结构,以及队列的应用场景。
【第四章串】1. 串是由零个或多个字符组成的有限序列,它是一种线性表的特例。
本章主要介绍了串的存储结构和基本操作,以及串的模式匹配算法。
【第五章数组与广义表】1. 数组是一种线性表的顺序存储结构,它的特点是所有元素都具有相同数据类型。
本章主要介绍了一维数组和多维数组的存储结构和基本操作,以及广义表的概念和表示方法。
【第六章树与二叉树】1. 树是一种非线性的数据结构,它的特点是一个节点可以有多个子节点。
本章主要介绍了树的基本概念和属性,以及树的存储结构和遍历算法。
2. 二叉树是一种特殊的树,它的每个节点最多只有两个子节点。
本章主要介绍了二叉树的存储结构和遍历算法,以及一些特殊的二叉树。
【第七章图】1. 图是一种非线性的数据结构,它由顶点集合和边集合组成。
本章主要介绍了图的基本概念和属性,以及图的存储结构和遍历算法。
【总结】1. 数据结构是计算机科学中非常重要的一门基础课程,它关注的是如何高效地组织和存储数据,以及如何通过算法进行数据的操作和处理。
本文对《数据结构》第二版严蔚敏的课后习题作业提供了参考答案,涵盖了第1-7章的内容。
第一章绪论一.填空题1.数据结构是一门研究非数值计算的程序设计问题中计算机的_____________ 以及它们之间的_________ 和操作等的学科。
2.数据结构包括数据的_____________ 结构、_____________ 结构和运算。
3.数据的物理结构被分为_________、________、__________和___________四种。
4.数据的逻辑结构是指数据元素之间的逻辑关系,根据数据元素之间关系的不同特性,逻辑结构通常有_______________ ,________________ ,________________ 和__________________四类基本结构。
5.一种抽象数据类型包括 ____________和_____________ 两个部分。
6.数据结构是指数据及其相互之间的______________。
当结点之间存在M 对N(M:N)的联系时,称这种结构为____________当结点之间存在1 对N(1:N)的联系时,称这种结构为____________。
7.数据结构被形式地定义为(D, R),其中D是___________ 的有限集合,R是D上的有限集合。
8. 数据的基本单位是________,它在计算机中是作为一个整体来处理的。
9.算法的特性有________,___________ ,____________ ,_______________ 和__________ 等五种特性。
10.通常从四个方面评价算法的质量:_________、_________、_________和_________。
11.算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。
12.算法的效率可分为______________ 效率和__________________ 效率。
13.算法的时间复杂度为(3n3+2000n log2n+90)/n2,其数量级表示为________。
习题一1.1有下列几种用二元组表示的数据结构,试画出它们分别对应的图形表示(当出现多个关系时,对每个关系画出相应的结构图),并指出它们分别属于何种结构。
1.A=(K,R) 其中K={a1,a2,a3,…,a n}R={}2.B=(K,R),其中K={a,b,c,d,e,f,g,h}R={<a,b>,<b,c>,<c,d>,<d,e>,<e,f>,<f,g>,<g,h>}3.C=(K,R),其中K={a,b,c,d,e,f,g,h}R={<d,b>,<d,g>,<b,a>,<b,c>,<g,e>,<g,h>,<e,f>}4.D=(K,R),其中K={1,2,3,4,5,6}R={(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)} 5.E=(K,R),其中K={48,25,64,57,82,36,75,43}R={r1,r2,r3}r1={<48,25>,<25,64>,<64,57>,<57,82>,<82,36>,<36,75>,<75,43>}r2={<48,25>,<48,64>,<64,57>,<64,82>,<25,36>,<82,75>,<36,43>}r3={<25,36>,<36,43>,<43,48>,<48,57>,<57,64>,<64,75>,<75,82>} 解:⑴是集合结构;⑵是线性结构;⑶⑷是树型结构;⑸散列结构1.2用C语言函数编写下列每一个算法,并分别求出它们的时间复杂度。
数据结构1-4章习题答案一、名词解释抽象数据类型、数据结构、数据结构的逻辑结构、数据结构的物理结构、算法、算法评价、时间复杂度、大O表示法、线性表、栈、队列、广义表、稀疏矩阵二、填空1、抽象数据类型是由一组数据结构和在该组数据结构上的一组操作所组成。
2、在定义某种数据结构时,其数据域的数据类型可分为简单类型和结构体类型两种,为增强其通用性,应将其再定义为通用数据类型。
3、如果将线性数据结构关系描述为1:1,那么树型和图型数据结构应分别为1:N、M:N5、算法应具备以下5个特性:有穷性、正确性、可行性、输入和输出。
6、在分析各种算法的时间复杂度时,一般只讨论相应的数量级,用f(n)表示,请问其中n的含义是处理问题的样本量7、对于一个以顺序实现的循环队列Q[m],队首、队尾指针分别为f 和r,其盘空的条件是f=r,盘满的条件是(r+1)%m=f8、循环链表的主要优点是最大限度的利用空间9、链表对于数据元素的插入和删除不需要移动结点,只需改变相关结点的指针域的值。
10、在一个链式栈中,若栈顶指针等于NULL,则为空栈11、主程序第一次调用递归函数被称为外部调用,递归函数自己调用自己被称为内部调用,它们都需要利用栈保存调用后的返回地址地址。
12、某算法在求解一个10阶方程组时,运算次数是500,求解一个30阶方程组时,运算次数是4500,则该算法的时间复杂度为O(N2)三、选择题1、对一个线性表的存取操作很少,而插入和删除操作较多时应采用B存储结构。
A.顺序存储B.链式存储C.索引存储D.散列式存储2、对一个线性表的随机存取操作较多时,应采用B存储结构。
A.静态顺序存储B.动态顺序存储C.动态链接存储D.静态链接存储3、对一个顺序存储结构的栈,栈满的判断条件是(D)A.S.top==-1B.S.top==0C.S.top==Ma某SizeD.S.top==Ma某Size-14、若循环队列有n个顺序存储单元,front、rear分别为队首和队尾指针则判断队满的条件是(C)A.(front+1)%n==rearB.(front-1)%n==rearC.(rear+1)%n==frontD.(rear-1)%n==front5、下列是顺序存储线性表排序的算法voidSort(Lit&L){}问:此算法的时间复杂性为:BA.O(n)B.(n2)C.(n某i)D.(n某j) inti,j;ElemType某;for(i=1;i某=L.lit[i];for(j=i-1;j>=0;j--)if(某L.lit[j+1]=L.lit[j];elebreak;L.lit[j+1]=某;四、简答题1、简述线性表的顺序存储和链接存储实现的异同。
国家开放大学《数据结构(本)》形考作业1-4参考答案形考作业1一、单项选择题(每小题3分,共60分)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.下列的叙述中,不属于算法特性的是()。
A. 可读性B. 输入性C. 可行性D. 有穷性8.算法的时间复杂度与()有关。
A. 算法本身B. 计算机的操作系统C. 数据结构D. 所使用的计算机9.设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为()。
A. n-i+1B. n-i-1C. n-iD. i10.设有一个长度为n的顺序表,要删除第i个元素移动元素的个数为()。
A. iB. n-iC. n-i-1D. n-i+111.在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句()。
A. p->next=q->nextB. p=q->nextC. p->next=qD. q->next=NULL12.在一个单链表中p所指结点之后插入一个s所指的结点时,可执行()。
国家开放大学《数据结构(本)》形考作业1-4参考答案形考作业1一、单项选择题(每小题3分,共60分)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.下列的叙述中,不属于算法特性的是()。
A. 可读性B. 输入性C. 可行性D. 有穷性8.算法的时间复杂度与()有关。
A. 算法本身B. 计算机的操作系统C. 数据结构D. 所使用的计算机9.设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为()。
A. n-i+1B. n-i-1C. n-iD. i10.设有一个长度为n的顺序表,要删除第i个元素移动元素的个数为()。
A. iB. n-iC. n-i-1D. n-i+111.在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句()。
A. p->next=q->nextB. p=q->nextC. p->next=qD. q->next=NULL12.在一个单链表中p所指结点之后插入一个s所指的结点时,可执行()。
数据库实用教程课后习题参考答案(1-4章)第1、2章1.1 名词解释:◆ DB:数据库(Database),DB是统一管理的相关数据的集合。
DB能为各种用户共享,具有最小冗余度,数据间联系密切,而又有较高的数据独立性。
◆ DBMS:数据库管理系统(Database Management System),DBMS是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。
DBMS总是基于某种数据模型,可以分为层次型、网状型、关系型、面向对象型DBMS。
◆ DBS:数据库系统(Database System),DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,即采用了数据库技术的计算机系统。
◆ 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”。
◆ 数据模型:表示实体类型及实体类型间联系的模型称为“数据模型”。
它可分为两种类型:概念数据模型和结构数据模型。
◆ 概念数据模型:它是独门于计算机系统的模型,完全不涉及信息在系统中的表示,只是用来描述某个特定组织所关心的信息结构。
◆ 结构数据模型:它是直接面向数据库的逻辑结构,是现实世界的第二层抽象。
这类模型涉及到计算机系统和数据库管理系统,所以称为“结构数据模型”。
结构数据模型应包含:数据结构、数据操作、数据完整性约束三部分。
第1章绪论课后习题讲解1.填空⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
【解答】数据元素⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。
【解答】数据项,数据元素【分析】数据结构指的是数据元素以及数据元素之间的关系。
)、()、()和()。
⑶ 从逻辑关系上讲,数据结构主要分为(【解答】集合,线性结构,树结构,图结构⑷ 数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。
【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系⑸ 算法具有五个特性,分别是()、()、()、()、()。
【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性⑹ 算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。
【解答】自然语言,程序设计语言,流程图,伪代码,伪代码⑺ 在一般情况下,一个算法的时间复杂度是()的函数。
【解答】问题规模⑻设待处理问题的规模为 n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n ,则表示成数量级的形式为()。
【解答】Ο(1) ,Ο(nlog2n)【分析】用大 O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。
2.选择题⑴ 顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A 线性结构B 非线性结构C 存储位置D 指针【解答】 C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。
⑵ 假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。
则表示该遗产继承关系的最合适的数据结构应该是()。
数据结构部分课后习题答案第一章1.1数据的逻辑结构是从具体问题中抽象出来的数学模型,体现了事物的组成和事物之间的逻辑关系。
数据的存储结构主要用来解决各种逻辑结构在计算机中物理存储表示的问题。
1.2事前分析和事后统计事前分析:优点,程序不必运行,所得结果只依赖于算法本身缺点,不够精确事后统计:优点,精确缺点,必须运行程序,所得结果依赖于硬件、环境等因素考虑赋值、运算操作执行的次数第3行赋值2次第6行赋值执行n次,加法执行n次所以,总共2n+2次操作,算法复杂度为O(n)1.4y= y + i * j 执行次数:1.5第二章2.9内存中一片连续空间(不妨假设地址从1到m)提供给两个栈S1和S2使用,怎样分配这部分存储空间,使得对任一个栈,仅当这部分空间全满时才发生上溢。
答:S1和S2共享内存中一片连续空间(地址1到m),可以将S1和S2的栈底设在两端,两栈顶向共享空间的中心延伸,仅当两栈顶指针相邻(两栈顶指针值之差的绝对值等于1)时,判断为栈满,当一个栈顶指针为0,另一个栈顶指针m+1时为两栈均空。
2.10线性表是数据项组成的一种有限且有序的序列,各元素之间呈线性关系。
从逻辑结构来说,栈和队列与线性表相同,都是典型的线性结构。
与线性表不同的是,栈和队列的操作特殊,受到一定的限制,仅允许在线性表的一端或两端进行。
栈是限定仅在一端进行插入删除的线性表,无论插入、删除还是读取都在一端进行,按后进先出的原则。
队列的元素只能从一端插入,从另一端删除,按先进先出的原则进行数据的存取。
2.11共有132种合法序列。
235641序列可以。
154623序列不可以。
对于每一个数来说,必须进栈一次、出栈一次。
我们把进栈设为状态‘1’,出栈设为状态‘0’。
n个数的所有状态对应n个1和n个0组成的2n位二进制数。
由于等待入栈的操作数按照1‥n的顺序排列、入栈的操作数b大于等于出栈的操作数a(a≤b),因此输出序列的总数目=由左而右扫描由n个1和n个0组成的2n位二进制数,1的累计数不小于0的累计数的方案种数。
数据结构练习题习题1 绪论1.1 单项选择题1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的①、数据信息在计算机中的②以及一组相关的运算等的课程。
①A.操作对象B.计算方法C.逻辑结构D.数据映象②A.存储结构B.关系C.运算D.算法2. 数据结构DS(Data Struct)可以被形式地定义为DS=(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. 易读性、稳定性和安全性1.2 填空题(将正确的答案填在相应的空中)1. 数据逻辑结构包括、、和四种类型,树形结构和图形结构合称为。
2. 在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。
3. 在树形结构中,树根结点没有结点,其余每个结点有且只有个直接前驱结点,叶子结点没有结点,其余每个结点的直接后续结点可以。
4. 在图形结构中,每个结点的前驱结点数和后续结点数可以。
5. 线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。
第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.数据管理技术的发展经历了多个理阶段,其中数据独立性最高的是( A )阶段。
A)数据库系统 B)文件系统 C)人工管理D)数据项管理2.( B )属于信息世界的模型,是现实世界到机器世界的一个中间层次。
A)数据模型 B)概念模型 C)E-R图 D)关系模型3.反映现实世界中实体及实体间联系的信息模型是( D )。
A)关系模型 B)层次模型 C)网状模型 D)E-R模型4.下列条目中,( C )是数据模型的要素。
Ⅰ.数据管理Ⅱ.数据操作Ⅲ.数据完整性约束Ⅳ.数据结构A)Ⅰ、Ⅱ和Ⅲ B)Ⅰ、Ⅱ和Ⅳ C)Ⅱ、Ⅲ和Ⅳ D)Ⅰ、Ⅲ和Ⅳ5.数据库的概念模型独立于( B )。
A)E-R图 B)具体的机器和DBMSC)现实世界 D)用户需求6.按所使用的数据模型来分,数据库可分为哪三种模型( A )。
A)层次、关系和网状 B)网状、环状和链状C)大型、中型和小型 D)独享、共享和分时7.层次模型不能直接表示实体间的( C )。
A)1﹕1关系 B)1:n关系 C)m﹕n关系 D)1﹕1和1:n关系8.在对层次数据库进行操作时,如果删除双亲节点,则相应的子女节点值也被同时删除。
这是由层次模型的( B )决定的。
A)数据结构 B)完整性约束 C)数据操作 D)缺陷9.下列条目中,( D )是数据库应用系统的组成成员。
Ⅰ.操作系统Ⅱ.数据库管理系统Ⅲ.用户Ⅳ.数据库管理员Ⅴ.数据库Ⅵ.应用系统A)仅Ⅱ、Ⅳ和Ⅴ B)仅Ⅰ、Ⅱ、Ⅲ、Ⅳ和ⅤC)仅Ⅰ、Ⅱ、Ⅳ和Ⅴ D)都是10.在数据库中,产生数据不一致性的根本原因是( C )。
A)数据存储量过大 B)访问数据的用户数太多C)数据冗余 D)数据类型太复杂11.关系模型的完整性规则不包括( D )。
A)实体完整性规则 B)参照完整性规则C)用户自定义的完整性规则 D)数据操作性规则12.数据库管理系统中数据操纵语言DML所实现的操作一般包括( A )。
A)查询、插入、修改、删除B)排序、授权、删除C)建立、插入、修改、排序D)建立、授权、修改13.关系模型中,一个关键字( C )。
《数据结构》国开02272形考任务(1-4)试题与答案汇总一、选择题(每题5分,共20分)1. 数据的逻辑结构就是数据的(A)A. 元素之间的关系B. 物理结构C. 元素的值D. 元素的数量2. 线性表的存储结构有(D)A. 顺序存储和链式存储B. 顺序存储和索引存储C. 链式存储和散列存储D. 顺序存储、链式存储和索引存储3. 下面哪个不是线性表的运算(C)A. 插入B. 删除C. 排序D. 查找4. 在长度为n的线性表中,删除第i个元素(i从1开始),需要移动(A)A. n-i个元素B. i个元素C. n个元素D. 0个元素答案:AADB二、填空题(每题5分,共20分)1. 长度为n的线性表,其元素一共有n个。
2. 线性表的顺序存储结构是利用一组地址连续的存储单元依次存储线性表的元素。
3. 在线性表中,删除第i个元素后,从第i个元素到表尾的所有元素都向前移动一个位置。
4. 栈是一种特殊的线性表,只允许在表的一端进行插入和删除操作。
答案:略三、判断题(每题5分,共20分)1. 线性表是一种最基本的数据结构,它的特点是数据元素之间是一对一的关系。
(正确)2. 顺序存储结构的特点是存取方便,但插入和删除操作需要移动大量元素。
(正确)3. 链式存储结构的特点是不需要连续的存储空间,但插入和删除操作需要修改指针。
(正确)4. 栈和队列都是线性结构,但栈的操作是后进先出,而队列的操作是先进先出。
(正确)答案:略四、简答题(每题10分,共40分)1. 简述线性表的顺序存储结构的特点。
(10分)顺序存储结构是利用一组地址连续的存储单元依次存储线性表的元素。
其特点是存取方便,时间复杂度为O(1)。
但插入和删除操作需要移动大量元素,时间复杂度为O(n)。
2. 简述线性表的链式存储结构的特点。
(10分)链式存储结构是由一系列结点组成的线性序列,每个结点包含数据域和指针域。
其特点是无需连续的存储空间,插入和删除操作只需修改指针,时间复杂度为O(1)。
第一章绪论一、选择题1.D2.C3.C4.B5.D6.C7.D8.C9.A 10.D11.D 12.B二、填空题1. 逻辑结构存储结构运算2. 集合结构线性结构树形结构图状结构3. 有穷性. 确定性. 可行性. 输入. 输出4. 顺序存储. 链式存储5. 数据元素6. 线性结构非线性结构三、简答题1. 尽管算法的含义与程序非常相似,但两者还是有区别的。
首先,一个程序不一定满有穷性,因为它不是一个算法。
其次,程序中的指令必须是计算机可以执行的,而算法中的指令却无此限制。
如果一个算法采用机器可执行的语言来书写,那么它就是一个程序。
2. 数据结构是指数据对象以及该数据对象集合中的数据元素之间的相互关系(数据元素的组织形式)。
例如:队列的逻辑结构是线性表(先进后出);队列在计算机中既可以采用顺序存储也可以采用链式存储;队列可进行删除数据元素. 插入数据元素. 判断是否为空队列,以及队列置空等操作。
3. 数据元素之间的逻辑关系,也称为数据的逻辑结构。
数据元素以及它们之间的相互关系在计算机存储器内的表示(又称映像)称为数据的存储结构,也称数据的物理结构。
4. 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或者多个操作。
此外,一个算法还具有下列5个特性:(1)有穷性:一个算法必须在执行有穷步之后结束,即算法必须在有限时间内完成。
(2)确定性:算法中每一步必须有明确的含义,不会产生二义性。
并且,在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出。
(3)可行性:一个算法是能执行的,即算法中的每一步都可以通过已经实现的基本运算执行有限次得以实现。
(4)输入:一个算法有零个或者多个输入,它们是算法开始时对算法给出的初始量。
(5)输出:一个算法有一个或者多个输出,它们是与输入有特定关系的量5. 举例说明四种基本结构的区别:集合: 数据元素之间无任何关系,如集合A={x,5,t,&};线性结构: 数据元素之间存在一个对一个的关系,如线性表L=(2,3,4,5,7,10);树形结构: 数据元素之间存在一个对多个的关系,如文件系统目录管理;图状结构: 数据元素之间存在多个对多个的关系,如教学计划课程安排顺序图。
四. 算法设计题1. 执行时间为O(n)2. 执行时间为O(n3)3. 时间复杂度为O(log n)。
第二章线性表一、选择题1.B2.A3.B4.A5.C6.D7.A8.C9.C 10.B11.A 12.D 13.C 14.A 15.B16.C 17.A 18.A二、填空题1. 没有,1,没有,12. 长度,空表3. 移动4. 顺序存储结构,链式存储结构5. 顺序表,链表6. 移动,指针域7. 移动,前一个8. 头指针,指针域(链域)9. p->next->next10. p->next,q11. 链式12. 不相同13. 直接前驱,直接后继14. 运算(或操作)三、简答题1. 非空线性表的结构特征为:①有且只有一个称“第一个结点” a1 ,它无前驱;②有且只有一个称“最后结点” a n ,它无后继;③除以上结点外,其余结点均有一个直接前驱和一个直接后继。
2. 线性表的顺序存储结构具有如下两个基本特点:①线性表中所有元素所占的存储空间是连续的;②线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
3. 用一维数组存放线性表时,应注意数组的基本类型,要与线性表中数据元素的类型相同,而且该一维数组的长度,通常要定义得比线性表的实际长度大一些,以便对线性表进行各种运算。
4. 线性表顺序存储结构的优点是:简单,存储密度大,空间利用率高,对表中任意元素可直接确定其存储地址,随机访问存取效率高。
线性表顺序存储结构的缺点是:在顺序表中进行插入与删除操作时,需大量移动数据元素,时间开销大;再者,在顺序存储结构下,线性表的长度估计困难,并且当有多个顺序表同时共享计算机的存储空间时,不便于对存储空间进行动态分配。
5. 假设数据结构中的每一个数据结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。
若每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。
其中指针用于指向该结点的前一个或后一个结点(即前驱或后继)。
通过每个结点的指针域,将n个结点按其逻辑顺序连接在一起而构成的数据存储结构,称为链式存储结构。
6.(1)开始结点(首结点):是指链表中的存储线性表中第一个数据元素a1的结点。
(2)头结点:为了操作方便,通常在链表的开始结点之前附加上一个结点,称为头结点。
一般情况下,头结点的数据域中不存储信息。
附设头结点的作用是为了对链表进行操作时更方便,可以对空表,非空表的情况以及对开始结点进行统一的处理。
(3)头指针:是指向链表中的第一个结点(可以是头结点,也可以是开始结点)的指针。
若链表中附设了头结点,则不管线性表是否为空,头指针均不为空;若链表中不设头结点,则线性表为空时,链表的头指针为空。
以上三个概念,对于单链表,循环链表和双向链表都适用。
7. 在单循环链表中,设置尾指针,可以更方便地判断链表是否为空。
8. 算法的功能是把单链表的第一个结点变成末尾结点。
返回的L指向原链表的第二个结点。
若原链表表示的线性表是(a1,a2,a3,a4......a n),则操作后表示的线性表为(a2,a3,a4......a n,a1)。
9. 由于向量中的元素按元素非递减有序排列,值相同的元素必为相邻的元素,因此依次比较相邻两个元素,若值相等,则删除其中一个,否则继续向后查询。
故算法功能是删除向量中多余的值相同的元素。
10.(1)单链表:当知道指针p指向某结点时,能够根据该指针找到其直接后继,但是不知道头指针,因此不能找到该结点的直接前驱,故无法删除该结点。
(2)双链表:根据指针p可以找到该结点的直接前驱和直接后继,因此,能够删除该结点。
(3)单循环链表:和双链表类似,根据指针p也可以找到该结点的直接前驱和直接后继,因此也可以删除该结点。
四、算法设计题1.【算法】void InsertInList(SequenList *L,DataType x){int i;for(i=0;i<L->Length(L)&&L->data[i]<x;i++); /*查找并比较*/Insert(L,i+1,x); /*调用顺序表插入算法*/ }2.【算法】LinkList *LinkTueList(LinkList *L1,LinkList *L2){ /*将两个单链表链接在一起*/LinkList *p,*q; p=L1;q=L2;while(p->next)p=p->next; /*查找终端结点*/p->next=q->next;free(q);return(L1); /*将L2的开始结点链接在L1之后*/}【时间复杂度分析】因为本算法的主要操作时间花费在查找L1的终端结点上,与L2的长度无关,所以本算法的时间复杂度为O(m)。
3.【算法】LinkList *JiaoJi(LinkList *A, LinkList *B){ LinkList *q,*p,*r,*s,*C;C = NULL;r = C;P = A; q = B;while (p&&q)if(p->data<q->data) p=p->next;else if(p->data==q->data){ s= (LinkList *)malloc(sizeof(LinkList));s->data=p->data;if(r!=NULL) r->next=s;else C=s;r=s;p=p->next;q=q->next;}else q=q->next;r->next=NULL;return( C );}4.【算法】void ShanChu(LinkList *L,int min,int max) /*设L为带头结点的单链表*/ { LinkList *p,*q,*s,*k;s=L; p=s->next;while(p!=NULL&&p->data>=max){s=p;p=p->next;} /*p指向第一个值小于max的结点,s指向其前驱*/ if(p!=NULL){ q=p;while(q!=NULL&&q->data>=min) /*q继续下移 */p=p->next; /* q指向第一个值不大于min的结点*/ s->next=q; /* 删除结点后的链接 */k=p->next;while(k!=q) /* 删除p结点到 q 结点之间的所有结点 */{ free(p); p=k; k=p->next;}}}【时间复杂度分析】前两个while循环和起来最多循环n次,第三个while循环最多循环n次,即删除n个结点,故算法的时间复杂度为O(n)。
5.【算法】LinkList *CharFen(LinkList *A){ LinkList *B,*p; /* p 指向A 表中序号为偶数的元素 */LinkList *ra, *rb; /* ra和rb将分别指向将创建的A表和B表的尾结点 */B=(LinkList *)malloc(sizeof(LinkList)); /* 创建B表头结点 */B->next=NULL; /* B表置空 */ra=A->next; rb=B; p=ra->next; /* p为工作指针,指向待分解的结点 */while(p!=NULL&&ra!=NULL){ ra->next=p->next; /* 做A表链接 */ra=p->next;rb->next=p; rb=p; /* p结点链接到B表的表尾,rb指向新的尾结点*/p=ra->next; /* 将p恢复为指向新的待处理结点 */}return(B);}6.【算法】void Rearrange(SequenList L) /* 本算法利用快速排序的划分重排线性表 */ { int i,j; /* i,j为工作指针(下标),初始指向线性表a的两端 */int t;i=0; j=Length(L)-1;while(i<j){ while(i<j && L->data[j]>=0) j++; /* 若当前元素>=0,则指针前移 */if(i<j) { t=L->data[i];L->data[i]=L->data[j];L->data[j]=t;i++; } /* 将负数前移 */while(i<j && L->data[i]<=0) i++; /* 当前元素为<=0,指针后移 */if(i<j) { t=L->data[i];L->data[i]=L->data[j];L->data[j]=t;j--; } /* 将正数后移 */}}7.【算法】void Delete_min(LinkList *L) /* L是带头结点的单链表 */{ LinkList *p, *pre, *q;p=L->next; /* p为工作指针。