欢迎来到天天文库
浏览记录
ID:36812011
大小:10.35 MB
页数:43页
时间:2019-05-15
《《数据结构基础教程》习题及解答》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、...《数据结构基础教程》习题解答(新)第1章习题解答一、填空1.数据是指所有能够输入到计算机中被计算机加工、处理的符号的集合。2.可以把计算机处理的数据,笼统地分成数值型和非数值型两大类。3.数据的逻辑结构就是指数据间的邻接关系。4.数据是由一个个数据元素集合而成的。5.数据项是数据元素中不可再分割的最小标识单位,通常不具备完整、确定的实际意义,只是反映数据元素某一方面的属性。6.数据是以数据元素为单位存放在内存的,分配给它的内存区域称为存储结点。7.每个数据元素都具有完整、确定的实际意义,是数据加工处理的对象。8.如果两个数据结点之间有着逻
2、辑上的某种关系,那么就称这两个结点是邻接的。9.在一个存储结点里,除了要有数据本身的内容外,还要有体现数据间邻接关系的内容。10.从整体上看,数据在存储器内有两种存放的方式:一是集中存放在一个连续的内存存储区中;一是利用存储器中的零星区域,分散地存放在内存的各个地方。11.在有些书里,数据的“存储结构”也称为数据的“物理结构”。12.“基本操作”是指算法中那种所需时间与操作数的具体取值无关的操作。二、选择1.在常见的数据处理中,B是最基本的处理。A.删除B.查找C.读取D.插入2.下面给出的名称中,A不是数据元素的同义词。A.字段B.结点C.顶
3、点D.记录3.D是图状关系的特例。A.只有线性关系B.只有树型关系C.线性关系和树型关系都不D.线性关系和树型关系都4.链式存储结构中,每个数据的存储结点里D指向邻接存储结点的指针,用以反映数据间的逻辑关系。A.只能有1个B.只能有2个C.只能有3个D.可以有多个5.本书将采用C来描述算法。A.自然语言B.流程图(即框图)C.类C语言D.C语言6.有下面的算法段:for(i=0;i4、周、吴、郑、王,,等姓氏数据之间,是一种什么样的邻接关系,为什么?答:是一种线性关系,因为这些姓氏之间符合关系的“有头有尾,顺序排列”的特点。2.什么是数据结点?什么是存储结点?它们间有什么关系?答:数据结点即是数据集合中的一个数据元素,存储结点是存放数据结点的内存单位。在存储结点里,不仅要存放数据结点的内容,还要(显式或隐式地)存放数据结点间的逻辑关系。3.为什么说链式存储既提高了存储的利用率,又降低了存储的利用率?答:由于链式存储是通过指针来体现数据元素之间的逻辑关系的,因此,存储结点可以不占用存储器的连续存储区。从这个意义上说,链式存储能5、够充分利用存储器中小的存储区,因此提高了存储器的利用率。另一方面,链式存储中的存储结点不仅要存放数据元素,还要占用适当的存储区来存放指针,这是一种额外的存储开销。从这个意义上说,链式存储降低了存储器的利用率。4.列举几个数据之间具有树型结构的实际例子。答:学校各级管理之间,是一种分支层次结构;一本书的书目,是一种分支层次结构。5.判断如下除法过程是否是一个算法,为什么:(1)开始;(2)给变量m赋初值5,给变量n赋初值0;(3)m=m/n;(4)输出m;(5)结束。答:因为0不能为除数,本题第(3)步不具有有效性,所以它不是一个算法。但如果n的6、初值不为0,则是一个正确的算法。四、应用1.用类C语言中的do-while语句,描述输出整数1、2、3、,,、9、10的过程。答:算法编写如下。voidnum(){i=1;do{printf(“i=%d”,i);i=i+1;}while(i<=10);}2.用类C语言中的if-else语句,编写算法,描述当输入的数据大于等于0时,输出信息:“输入的是正数”;当输入的数据小于0时,输出信息:“输入的是负数”。答:算法编写如下。voidjudge(){scanf(“%d”,&x);if(x>=0)-2-......习题解答printf(“输7、入的是正数”);elseprintf(“输入的是负数”);}3.分析算法段中标有记号“#1”和“#2”的基本操作的执行次数:for(i=0;i8、)x++;}答:(1)的时间复杂度为O(1);(2)的时间复杂度O(n);(3)中“printf(“j=%”,j);”执行次数的数量级为O(n),“x
4、周、吴、郑、王,,等姓氏数据之间,是一种什么样的邻接关系,为什么?答:是一种线性关系,因为这些姓氏之间符合关系的“有头有尾,顺序排列”的特点。2.什么是数据结点?什么是存储结点?它们间有什么关系?答:数据结点即是数据集合中的一个数据元素,存储结点是存放数据结点的内存单位。在存储结点里,不仅要存放数据结点的内容,还要(显式或隐式地)存放数据结点间的逻辑关系。3.为什么说链式存储既提高了存储的利用率,又降低了存储的利用率?答:由于链式存储是通过指针来体现数据元素之间的逻辑关系的,因此,存储结点可以不占用存储器的连续存储区。从这个意义上说,链式存储能
5、够充分利用存储器中小的存储区,因此提高了存储器的利用率。另一方面,链式存储中的存储结点不仅要存放数据元素,还要占用适当的存储区来存放指针,这是一种额外的存储开销。从这个意义上说,链式存储降低了存储器的利用率。4.列举几个数据之间具有树型结构的实际例子。答:学校各级管理之间,是一种分支层次结构;一本书的书目,是一种分支层次结构。5.判断如下除法过程是否是一个算法,为什么:(1)开始;(2)给变量m赋初值5,给变量n赋初值0;(3)m=m/n;(4)输出m;(5)结束。答:因为0不能为除数,本题第(3)步不具有有效性,所以它不是一个算法。但如果n的
6、初值不为0,则是一个正确的算法。四、应用1.用类C语言中的do-while语句,描述输出整数1、2、3、,,、9、10的过程。答:算法编写如下。voidnum(){i=1;do{printf(“i=%d”,i);i=i+1;}while(i<=10);}2.用类C语言中的if-else语句,编写算法,描述当输入的数据大于等于0时,输出信息:“输入的是正数”;当输入的数据小于0时,输出信息:“输入的是负数”。答:算法编写如下。voidjudge(){scanf(“%d”,&x);if(x>=0)-2-......习题解答printf(“输
7、入的是正数”);elseprintf(“输入的是负数”);}3.分析算法段中标有记号“#1”和“#2”的基本操作的执行次数:for(i=0;i8、)x++;}答:(1)的时间复杂度为O(1);(2)的时间复杂度O(n);(3)中“printf(“j=%”,j);”执行次数的数量级为O(n),“x
8、)x++;}答:(1)的时间复杂度为O(1);(2)的时间复杂度O(n);(3)中“printf(“j=%”,j);”执行次数的数量级为O(n),“x
此文档下载收益归作者所有