严飞_软件技术基础沈被娜习题解答

上传人:l**** 文档编号:127636692 上传时间:2020-04-04 格式:DOC 页数:31 大小:461KB
返回 下载 相关 举报
严飞_软件技术基础沈被娜习题解答_第1页
第1页 / 共31页
严飞_软件技术基础沈被娜习题解答_第2页
第2页 / 共31页
严飞_软件技术基础沈被娜习题解答_第3页
第3页 / 共31页
严飞_软件技术基础沈被娜习题解答_第4页
第4页 / 共31页
严飞_软件技术基础沈被娜习题解答_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《严飞_软件技术基础沈被娜习题解答》由会员分享,可在线阅读,更多相关《严飞_软件技术基础沈被娜习题解答(31页珍藏版)》请在金锄头文库上搜索。

1、第二章2.1 什么是数据结构?它对算法有什么影响? 数据结构是指同一数据对象中各数据元素间存在的关系。 数据结构对算法的影响:算法的实现必须借助程序设计语言中提供的数据类型及其运算。一个算法的效率往往与数据的表达形式有关,因此数据结构的选择对数据处理的效率起着至关重要的作用。它是算法和程序设计的基本部分,它对程序的质量影响很大。2.2 何谓算法?它与程序有何区别?广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。计算机算法是通过计算机能执行的算法语言来表达的。和程序的区别:一个程序包括两个方面的内容:(1)对数据的描述,即数据结构。(2)对操作的描述,即算法。所以算法是程序的一个要素

2、。2.3 何谓频度,时间复杂度,空间复杂度?说明其含义。频度:在某个算法中某个语句被重复执行的次数就是此语句的频度。时间复杂度:是用来估算一个算法的执行时间的量,以算法中频度最大的语句来度量。空间复杂度:指在算法中所需的辅助空间的单元,而不包括问题的原始数据占用的空间。2.4试编写一个求多项式Pn =anxn +an-1 xn-1+a1x+a0的值Pn(x 0)的算法,要求用乘法次数最少,并说明算法中主要语句的执行次数及整个算法的时间复杂度。A=(a0, a1 an)mul 1 / sum=a0for i=1 to nmul mul * x / xsum = Ai*mul + sum /求和e

3、nd(i)进行了n次时间复杂度为:2n2.5计算下列各片段程序中XX+1执行次数(1)for i=1 to n for j=1 to ifor k=1 to j xx+1end(k) end(j)end(i)执行次数:n*n*n (2)i1while in doxx+1ii+1end(while)执行次数:n-1(3)for i=1 to nj1for k=j+1 to nx x+1end(k)end(i)执行次数:n*(n-1)2.6 数据的存储结构主要有哪两种?它们之间的本质区别是什么?数据的存储结构:向量和链表。本质区别:向量是连续存放的,其存储空间是静态分配的,以存放顺序来表达元素的前

4、后件的关系。链式存储结果不需要一组连续的存储单元,其数据元素可以分散存放在存储空间中,其元素关系由指针来指向。2.8已知线性表L(a1, a2, , an ) 元素按递增有序排列。用向量作为存储结构,试编写算法:删除表中值在c与d之间(c=c / 找到第1个大于等于c的元素 s = i if t = -1 and Li d / 找到第1个大于d的元素 t = i ; end (i)if s != -1 and t !=-1 i = s while i t and i + t s =n Li = L i + t s i+end(while)else return(错误 没有找到 元素在c和d之间

5、)end(if) for j=c to n-d+cLj-Lj+d-c/把j+d-c项给jEnd(j)N-n-d+c/所有项数减少Return2.9 线性表A,B中的元素为字符串类型,用向量结构存储,试编写算法,判断B是否为A的子序列(例如A=ENGLISH ,B=LIS ,则B为A的子序列)Am Bna1a2a3a4a5a6a7a8a9a10a11a12a130a14a15A:b1b2b3b4b5b6B:i=1 检查A中第1个元素开始的字符串是否与B匹配i=2 检查A中第2个元素开始的字符串是否与B匹配 i= m n + 1 检查 A中 第(m-n+1)个元素开始的字符串是否与B匹配AmBni

6、f ( mn ) then return errorfor ( i =1; i= m-n+1; i+) for (j = 1; jn then return( A字符串中第i个字符开始的子串与B匹配 ) end(i)renturn (找不到匹配的子串)设A,B两个线性表的元素个数为m,nIf (m=n)thenreturnFor i=0 to n-1a=Aifor j=0 to m-1if(a=Bj)thenb+end(j)end(i)if(b=m)thenB 为A的子集return2.11写一个将向量L(a1 ,a2, an)倒置的算法。a1a2a3a4a5a6a7a8a9a10a11a12

7、a130a14a15对L(a1,a2, . ., an )如果是奇数个元素,则1, 15 交换 1, n 交换2,14 交换 2, n-1 交换3,13 交换 3,n-2 交换 4,12 交换 4,n-3 交换5,11 交换 5,n-4 交换6,10 交换 6,n-5 交换7,9 交换 7,n-6 交换8,8 交换 8,n-7 交换9,7 交换 9,n-8 交换? 停止!a1a2a3a4a5a6a7a8a9a10a11a12a130a14a15如果是偶数个元素,则1,14 交换 1, n 交换2,13 交换 2, n-1 交换3,12 交换 3,n-2 交换4,11 交换 4,n-3 交换5,

8、10 交换 5,n-4 交换6,9 交换 6,n-5 交换7,8 交换 7,n-6 交换8,7 交换? 8,n-7 交换? 停止!小结:n个元素倒置的算法是,i = 1while ( in-i+1)ai 与 an-i+1 交换i+end(while) 2.12试编写算法求已知单链表长度,并考虑表空的情况。p = headi = 0While(p!=nil) /表不为空P- next(p)/移动到下一个元素i+End(while)Return i /返回数据的个数2.13试编写算法删除单链表中第k个结点。标签GETNODE(q)GETNODE(p)q-headFor i=1 to k-1q-ne

9、xt(q)End(i)P-next(q);next(q)-next(p)Ret(p)Return2.14 已知一循环链表中数值已按递增有序排列现要插入一个新结点,并使插入一个新节点,并使插入后链表仍为有序序列GETNODE(p)Data(p)=aWhile(data(p)data(n)n-next(n)End(while) q -nnext(p) -next(q)-preturn2.18 设在长度大于1 的循环链表中,即无头结点,也无头指正,p为指向链表中每个节点的指针,试编写算法删除该节点的前趋结点。q-Next(p)/找到该节点的前趋结点p-next(q);next(q)-next(p)R

10、ET(p)Return2.20 试用单链表表示两个多项式:A=4X12 +5X8+6X3+4 ,B=3X12+6X7+2X4+5(1)设计此两个多项式的数据结构-1A043685124-1B054276123(2)写出两个多项式相加的算法II 答案参见33页即可2.22 CQ0:10为一循环队列,初态 front=rear=1,画出下列操作后队的头,尾指示器状态:(1)d,e,b,g,h入队;rear=6 front=1(2)d,e出队 rear=6 front=3(3)I,j,k,l,m入队 rear=0 front=3(4)b出队 rear=0 front=4(5)n,o,p,q,r入队

11、rear=5 front=42.25 有一个二维数组A1:m ;1:n,假设A3,2地址为1110,A2,3地址为1115,若每个单元占一个空间,问A1,4的地址是多少答案:11202.26 用三维数组和带行辅助向量形式表示下列稀疏矩阵:答案:(1)1115142216-15221123334-651916328I12356Pos12413Num32111(2)参考上面的,和47,48页的内容2.28将题图2.3的一般树化为二叉树。答案:2.29 设一颗完全二叉数有1000个结点,试问:(1)有多少个叶子结点 489(2)有多少个度为2的结点 2(3) 有多少个结点只有非空左子树 12.30 设一颗二叉树其中序和后序遍历为中序:BDCEAFHG后序:DECBHGFA答案:ABCDEFHG231.对二叉树写出如下算法:(1)复制一棵二叉树;(2)判断两棵二叉树是否相等;(3)计算二叉树的树叶;(4)计算二叉树的深度;解:1)/复制一棵二叉树/*算法思想 采用递规函数来实现 (1)如果树为空,则

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

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

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