数据结构课后习题部分参考答案

上传人:l**** 文档编号:127729738 上传时间:2020-04-05 格式:DOC 页数:21 大小:253.50KB
返回 下载 相关 举报
数据结构课后习题部分参考答案_第1页
第1页 / 共21页
数据结构课后习题部分参考答案_第2页
第2页 / 共21页
数据结构课后习题部分参考答案_第3页
第3页 / 共21页
数据结构课后习题部分参考答案_第4页
第4页 / 共21页
数据结构课后习题部分参考答案_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《数据结构课后习题部分参考答案》由会员分享,可在线阅读,更多相关《数据结构课后习题部分参考答案(21页珍藏版)》请在金锄头文库上搜索。

1、数据结构课后习题部分参考答案第一章一、选择题1C 2C 3A 4D 5B二、判断题1 2 3 4 5三、简答题1 常见逻辑结构: 集合结构,数据元素之间的关系仅仅是属于同一个集合。 线性结构,除第一个元素只有一个直接后继、最后一个元素只有一个直接前驱,其余元素有且只有唯一一个直接前驱、有且只有唯一一个直接后继,数据元素之间存在一对一的关系。 树形结构,树中只有唯一一个根元素,除根元素之外,其余元素只有一个直接前驱,但可以有多个直接后继元素,数据元素之间存在一对多的关系。 图形结构,元素之间关系任意,数据元素之间存在多对多的关系。常用的存储结构: 顺序存储,把逻辑上相邻的元素存储在物理位置相邻的

2、存储单元中,由此得到的存储表示称为顺序存储结构。通常用数组实现。 链式存储,对逻辑上相邻的元素不要求其物理位置相邻,元素间的逻辑关系通过附加的指针字段来表示,由此得到的存储表示称为链式存储结构。通常用指针来实现。除上述两种方法外,有时为了查找方便还采用索引存储方法和散列存储方法。索引存储:在存储结点信息的同时,还建立附加的索引表来标识结点的地址。散列存储:根据元素的关键码确定元素存储位置的存储方式。2 算法与程序的区别: 程序不一定满足有穷性(如操作系统); 程序中的指令必须是机器可执行的,算法中的指令则无此限制; 算法代表了对问题的解,程序则是算法在计算机上的特定的实现(一个算法若用程序设计

3、语言来描述,它才是一个程序);数据结构+算法=程序。3例如有一张学生成绩表,记录了一个班的学生各门课的成绩。按学生的姓名为一行记成的表。这个表就是一个数据结构。每个记录就是一个结点,对于整个表来说,只有一个开始结点和一个终端结点,其他的结点则各有一个也只有一个直接前趋和直接后继。这几个关系就确定了这个表的逻辑结构线形结构。那么我们怎样把这个表中的数据存储到里呢? 用高级语言如何表示各结点之间的关系呢? 是用一片连续的内存单元来存放这些记录(顺序存储)还是随机存放各结点数据再用指针进行链接(链式存储)呢? 这就是存储结构的问题,我们都是从高级语言的层次来讨论这个问题的。最后,我们有了这个表,肯定

4、要用它,那么就是要对这张表中的记录进行查询,修改,删除等操作,对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算问题了。4例如栈和队列,两个数据结构的逻辑结构和存储方式完全相同,只是对于运算(如插入、删除)的定义不同,两个结构具有显著不同的特性。5语句频度(1)n-1 (2)1 (3)n(n+1)/2 (4)n/2-1 (5)100 6时间复杂度(1)O(log3n) (2)O(n2) (3)O(n2)7算法思想: P (x,n)=(anx+an-1)x+an-2)x+a1)x+a0 语句: y=0 ; for (i=n;i=0;i-) y=y*x+ ai ; 函数:void p( )

5、float x,y;int n,i,a;scanf(%f,&x);scanf(%d,&n);y=0; for (i=n;i=0;i-) scanf(%d,&a);y=y*x+a; printf(x=%4.2f,y=%6.4f,x,y);第二章一、选择题1A 2A 3D 4C 5D6B 7C 8B 9A 10D11B 12D二、判断题1 2 3 4 5 6 7 8 9 10 11 12三、算法设计题1第一种方法(从后往前比较): 因已知顺序表L是递增有序表,所以只要从顺序表终端结点(设为i位置元素)开始向前寻找到第一个小于或等于x的元素位置i后,插入该位置后面即可。在寻找过程中,由于大于x的元素

6、都应放在x之后,所以可边寻找,边后移元素,当找到第一个小于或等于x的元素位置i时,插入x的位置i+1也空出来了。算法如下:void InsertIncreaseList1(seqlist *L,datatype x)int i; if (L-elemnum=maxsize) printf(overflow); / L-elemnum 中存放当前顺序表中的元素个数 for (i=L-elemnum-1;i=0 & L-dataix;i-) L-datai+1=L-datai; /从后往前比较并移动元素 L-datai+1=x; L-elemnum+;第二种方法(从前往后比较):void Inse

7、rtIncreaseList2(seqlist *L,datatype x)int i,j; if (L-elemnum=maxsize) printf(overflow); i=0; while(ielemnum-1)&(L-dataielemnum-1;j=i;j-) L-dataj+1=L-dataj; /腾位置 L-datai=x; /插入 L-elemnum+;2(思路同算法2-16)6(同1类似,最好也做一下。1是顺序存储,6是链式存储。做完同1比较一下)7(看算法2-17,尾插实现)第三章一、选择题1C 2B 3D 4B 5B6C 7B 8D 9C 10C二、判断题1 2 3 4

8、 5 三、简答题1循环队列的优点是:它可以克服顺序队列的假上溢现象,能够使存储队列的向量空间得到充分的利用。 判别循环队列的空或满通常有两种方法:(1)另设一个变量num记录当前队列中的元素个数,当num=0时队空, num=maxsize时队满。(2)少用一个存储单元(即少存一个元素), 队空条件为front = rear,队满条件为(rear + 1) % maxsize = front 。2栈的特点是先进后出,队列的特点是先进先出。 先进后出用栈;先进先出用队列。3一个直接调用自己或通过一系列调用间接调用自己的过程称为递归。 递归程序结构清晰,可读性强,而且容易用数学归纳法来证明程序的正

9、确性。 递归程序运行效率低,不论是耗费的计算时间还是占用的存储空间都比非递归程序要多。41234,1243,1324,1342,1432,2134,2143,2314,2341,2431,3214,3241,3421,4321(十四种可能)四、算法设计题1思想:将一半字符入栈) 算法为:/以下为顺序栈的存储结构定义#define StackSize 100 /假定预分配的栈空间最多为100个元素typedef char DataType;/假定栈元素的数据类型为字符typedef structDataType dataStackSize;int top;SeqStack;int IsHuiwe

10、n( char *t)/判断t字符向量是否为回文,若是,返回1,否则返回0SeqStack s;int i , len;char temp;InitStack( &s);len=strlen(t); /求向量长度for ( i=0; ilen/2; i+)/将一半字符入栈Push( &s, ti); if (len%2=1) i+;/ 处理向量长度为奇数的情况 while( !EmptyStack( &s)/ 每弹出一个字符与相应字符比较temp=Pop (&s);if( temp!=Si) return 0 ;/ 不等则返回0else i+;return 1 ; / 比较完毕均相等则返回 1

11、2我们通常用一个有三个分量(存储元素的空间、front、rear)的结构体变量实现循环队列,此题即要求用一个数组和两个简单变量(而不是一个结构体变量)实现循环队列的入队和出队。5思想: 对表达式进行扫描,凡遇到(就进栈,遇)就退掉栈顶的(,表达式被扫描完毕,栈应为空。 算法如下:int PairBracket( char *SR)/检查表达式ST中括号是否配对int i;SeqStack S; /定义一个栈InitStack (&s);for (i=0; istrlen(SR) ; i+)if ( Si=( ) Push(&S, SRi); /遇(时进栈if ( Si=) ) /遇)if (!

12、StackEmpty(S)/栈不为空时,将栈顶元素出栈Pop(&s);else return 0;/不匹配,返回0if EmptyStack(&s) return 1;/ 匹配,返回1else return 0;/不匹配,返回0第五章一、选择题1 C 2 C 3. B 4 B 5B 6 C 7 B 8 D 9 A 10D 11D 12C 13B 14D 15B二、判断题1 2 3 4 5 6 7 8 9 10 11. 12. 13 14 15 16 17 18 19 20三、简答题1一棵度为2的树与一棵二叉树的区别在于: 度为2的树有两个分支,没有左右之分;一棵二叉树也有两个分支,但有左右之分,左右不能交换。树与二叉树的区别:(1)二叉树的一个结点至多有两个子树,树形则不然。(2)树中的结点只有一个子树时,无须区分其是左子树还是右子树;而二叉树中的结点只有一个子树时,必需确定其是左子树还是右子树。2(1)0123456789101112ABCDEFGH (2)ABDGFFECEDHFE (3)ABDGFFECEDHFE3(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号