收藏 分享(赏)

数据结构习题课3.ppt

上传人:精品资料 文档编号:10454099 上传时间:2019-11-14 格式:PPT 页数:41 大小:872.50KB
下载 相关 举报
数据结构习题课3.ppt_第1页
第1页 / 共41页
数据结构习题课3.ppt_第2页
第2页 / 共41页
数据结构习题课3.ppt_第3页
第3页 / 共41页
数据结构习题课3.ppt_第4页
第4页 / 共41页
数据结构习题课3.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、数据结构习题 第 3 章,吉林大学计算机科学与技术学院 谷方明,3-4,二维数组A有4行8列,下标从0开始,存储A的起始地址为2000,每个元素用相邻的4个字节存储,试计算: 存储整个数组一共需要多少个字节。 数组A的最后一个元素的起始地址。 按行存储时,A24的起始地址。 按列存储时,A32的起始地址。,作业情况,全对的不多有的同学不写计算过程,考试时不给分,参考答案,4*8*4=1282000+(3*8+7)*4=21242000+(2*8+4)*4=20802000+(2*4+3)*4=2044,3-8,给出如下稀疏矩阵的三元组表表示:,3-9,给出如下稀疏矩阵的十字链表表示:,参考答案

2、,教材P65画图的注意事项 每行的头结点分开画。画成数组,线交叉难处理。 每列的头结点分开画。 减少线交叉。,作业3-10,设稀疏矩阵Mm*n中有t个非零元素,用三元组表的方式存储. 请设计一个算法,计算矩阵M的转置矩阵N ,且算法的时间复杂性为O(n+t). 注意,书中给出的算法的复杂性为O(n*t),算法的关键是求出A中元素在B中的位置,Bnubmer = 0 FOR i=0 TO Cols(A) DOFOR j=0 TO t DOIF col(Aj)=i Then(row(BBnumber)=icol(BBnumber)=row(Aj)value(BBnumber)=Value(Aj)B

3、number+),i=0 j=0,i=1 j=0,i=2 j=0,i=3 j=0,算法: TRANSPOSE(A. B) TP1初始化 /*声明A的转置矩阵B,使得B的行数等于A的列数,B的列数等于A的行数,B中非0元素的个数等于A中非0元素的个数*/ nRows(B)Cols(A). Cols (B)Rows(A). tCount(B) Count(A).,TP2 定义数组num存储A中 每列非零元素个数 FOR i 0 TO n-1 DOnumi0. FOR i 0 TO t-1 DO(j col(A i).numjnumj+1. )/A中每列非零元素个数 定义数组pos存储A中每列第一个

4、非零元素在B的三元组表中的位置 pos0 0 FOR i 1 TO n-1 DO(posi posi-1+numi-1 ),b0 b1 b2 b3 b4 b5,TP3处理三元组表FOR i 0 TO t-1 DO( pcol(A i).kposp.col( Bk) row(Ai).row(Bk) col(Ai).val(Bk) val(Ai).posp posp+1 ).,TP3处理三元组表FOR i 0 TO t-1 DO( pcol(A i).kposp.col( Bk) row(Ai).row(Bk) col(Ai).val(Bk) val(Ai).posp posp+1 ).,TP3处

5、理三元组表FOR i 0 TO t-1 DO( pcol(A i).kposp.col( Bk) row(Ai).row(Bk) col(Ai).val(Bk) val(Ai).posp posp+1 ).,TP3处理三元组表FOR i 0 TO t-1 DO( pcol(A i).kposp.col( Bk) row(Ai).row(Bk) col(Ai).val(Bk) val(Ai).posp posp+1 ).,TP3处理三元组表FOR i 0 TO t-1 DO( pcol(A i).kposp.col( Bk) row(Ai).row(Bk) col(Ai).val(Bk) val

6、(Ai).posp posp+1 ).,TP3处理三元组表FOR i 0 TO t-1 DO( pcol(A i).kposp.col( Bk) row(Ai).row(Bk) col(Ai).val(Bk) val(Ai).posp posp+1 ).,TP3处理三元组表FOR i 0 TO t-1 DO( pcol(A i).kposp.col( Bk) row(Ai).row(Bk) col(Ai).val(Bk) val(Ai).posp posp+1 ). ,作业情况,很多同学思想正确,但细节出错 b.smArrayqsmArrayi.col.row=smArrayi.row; b.

7、smArrayqsmArrayi.col.col=smArrayi.col;有的行列用i,j;有一些同学先复制,后排序。思想正确,但时间复杂性至少O(tlogt)的,3-14,试编写一个模式匹配算法,匹配过程为:先匹配模式的首尾字符,若匹配成功,调用成员函数Substr(取子串)来检查模式的首尾之间的字符是否与目标的相应字符相匹配,若匹配不成功;则进行下一次匹配。,作业情况,string temp1=pat.substr(0,1); stirng temp2=pat.substr(pat.length()-1,1); if(temp1.FastFind(temp2) = 0) string t

8、emp=pat.substr(1,pat.length()-3);if(s.FastFind(temp) return true; return false;,分析,题意不清如何检查:首尾之间的字符是否与目标的相应字符相匹配? 递归吗? 既然让用Substr(),那就直接用=及各种匹配算法,参考答案1,int indexOf(string s,string p) if(p=“” ,参考答案2,int indexOf(string s,string p) if(p=“” ,3-16,已知主串s=“abcaabbabcabaacbacba“,模式串pat=“abcabaa“,写出模式串的f值,并由

9、此画出KMP算法匹配的全过程。,参考答案,f值的计算:pat=“abcabaa“KMP算法的匹配过程 s=“abcaabbabcabaacbacba“ pat=“abcabaa“,abcaabbabcabaacbacba abcabaa s=4 p=4 abcaabbabcabaacbacbaabcabaa s=4 p=f(3)+1=1 abcaabbabcabaacbacbaabcabaa s=4 p=f(0)+1=0 s=6 p=2 abcaabbabcabaacbacbaabcabaa s=6 p=f(1)+1=0 s=7 abcaabbabcabaacbacbaabcabaa,作业情况

10、,有的同学画出7步,表扬有的同学画出3步,缺步骤,6-11,已知Ackerman函数定义如下:n+1 m=0 Ack(m,n)= Ack(m-1,1) m0,n=0Ack(m-1,Ack(m,n-1) m 0,n 0(1)写出计算Ackerman函数的递归算法; (2)使用一个数组,写出计算Ackerman函数的非递归算法; (3)根据非递归算法求出Ack(2,1)的值。,参考答案,递归算法 int Ack(int m,int n) if(m=0) return n+1;if(n=0) return Ack(m-1,1);return Ack(m-1,Ack(m,n-1); ,非递归求Ack(

11、2,1),一种错误的做法,int Ack(int m,int n) for(int i=0;i=n;i+) a0i=i+1;for(i=1;i=m;i+)ai0=ai-11;for(j=1;j=n;j+)aij=ai-1aij-1;return amn; ,参考答案,非递归算法(使用堆栈) 算法Ack(m,n) /*非递归方法求解Ackerman(m,n)*/ A1初始化CREATS(s). S(m,n). A2非递归求解,堆栈模拟问题分解WHILE(NOT StackEmpty(s) DO(mt,nt) S;IF(mt=0) THEN(x nt+1. IF(StackEmpty(s)THEN

12、 RTURN x.ELSE ( (mt,nt) S. S(mt,x).).ELSEIF(nt=0) THEN S(mt-1,1).ELSE (S(mt-1,0). S(mt,nt-1).) ). ,参考答案,非递归算法(使用堆栈) int Ack(int m,int n) int mmMAXS,nnMAXS,top=-1,mt,nt,x;top+,mmtop=m,nntop=n;while(top=0)mt=mmtop,nt=nntop,top-;if(mt=0) x=nt+1;if(top=0) nntop=x;else return x;else if(nt=0) top+,mmtop=mt-1,nntop=1;else top+,mmtop=mt-1;top+,mmtop=mt,nntop=nt-1; ,参考答案,非递归求Ack(2,1),非递归求Ack(1,3),6-12,根据例6.4 和例6.5, (1) 给出HR(3,1,2,3)递归算法的移动过程; (2) 以HI(3,1,2,3)为例,给出堆栈的变化过程。 【提示】参考例6.4和例6.5,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报