数据结构习题课3PPT学习课件_第1页
数据结构习题课3PPT学习课件_第2页
数据结构习题课3PPT学习课件_第3页
数据结构习题课3PPT学习课件_第4页
数据结构习题课3PPT学习课件_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构习题第3章,吉林大学计算机科学与技术学院谷方明,1,3-4,二维数组A有4行8列,下标从0开始,存储A的起始地址为2000,每个元素用相邻的4个字节存储,试计算:存储整个数组一共需要多少个字节。数组A的最后一个元素的起始地址。按行存储时,A24的起始地址。按列存储时,A32的起始地址。,2,作业情况,全对的不多有的同学不写计算过程,考试时不给分,3,参考答案,4*8*4=1282000+(3*8+7)*4=21242000+(2*8+4)*4=20802000+(2*4+3)*4=2044,4,3-8,给出如下稀疏矩阵的三元组表表示:,5,6,3-9,给出如下稀疏矩阵的十字链表表示:,7,参考答案,教材P65画图的注意事项每行的头结点分开画。画成数组,线交叉难处理。每列的头结点分开画。减少线交叉。,8,作业3-10,设稀疏矩阵Mm*n中有t个非零元素,用三元组表的方式存储.请设计一个算法,计算矩阵M的转置矩阵N,且算法的时间复杂性为O(n+t).注意,书中给出的算法的复杂性为O(n*t),9,算法的关键是求出A中元素在B中的位置,10,Bnubmer=0FORi=0TOCols(A)DOFORj=0TOtDOIFcol(Aj)=iThen(row(BBnumber)=icol(BBnumber)=row(Aj)value(BBnumber)=Value(Aj)Bnumber+),i=0j=0,i=1j=0,i=2j=0,i=3j=0,11,12,算法: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).,13,TP2定义数组num存储A中每列非零元素个数FORi0TOn-1DOnumi0.FORi0TOt-1DO(jcol(Ai).numjnumj+1.)/A中每列非零元素个数定义数组pos存储A中每列第一个非零元素在B的三元组表中的位置pos00FORi1TOn-1DO(posiposi-1+numi-1),14,b0b1b2b3b4b5,15,TP3处理三元组表FORi0TOt-1DO(pcol(Ai).kposp.col(Bk)row(Ai).row(Bk)col(Ai).val(Bk)val(Ai).pospposp+1).,16,TP3处理三元组表FORi0TOt-1DO(pcol(Ai).kposp.col(Bk)row(Ai).row(Bk)col(Ai).val(Bk)val(Ai).pospposp+1).,17,TP3处理三元组表FORi0TOt-1DO(pcol(Ai).kposp.col(Bk)row(Ai).row(Bk)col(Ai).val(Bk)val(Ai).pospposp+1).,18,TP3处理三元组表FORi0TOt-1DO(pcol(Ai).kposp.col(Bk)row(Ai).row(Bk)col(Ai).val(Bk)val(Ai).pospposp+1).,19,TP3处理三元组表FORi0TOt-1DO(pcol(Ai).kposp.col(Bk)row(Ai).row(Bk)col(Ai).val(Bk)val(Ai).pospposp+1).,20,TP3处理三元组表FORi0TOt-1DO(pcol(Ai).kposp.col(Bk)row(Ai).row(Bk)col(Ai).val(Bk)val(Ai).pospposp+1).,21,TP3处理三元组表FORi0TOt-1DO(pcol(Ai).kposp.col(Bk)row(Ai).row(Bk)col(Ai).val(Bk)val(Ai).pospposp+1).,22,作业情况,很多同学思想正确,但细节出错b.smArrayqsmArrayi.col.row=smArrayi.row;b.smArrayqsmArrayi.col.col=smArrayi.col;有的行列用i,j;有一些同学先复制,后排序。思想正确,但时间复杂性至少O(tlogt)的,23,3-14,试编写一个模式匹配算法,匹配过程为:先匹配模式的首尾字符,若匹配成功,调用成员函数Substr(取子串)来检查模式的首尾之间的字符是否与目标的相应字符相匹配,若匹配不成功;则进行下一次匹配。,24,作业情况,stringtemp1=pat.substr(0,1);stirngtemp2=pat.substr(pat.length()-1,1);if(temp1.FastFind(temp2)=0)stringtemp=pat.substr(1,pat.length()-3);if(s.FastFind(temp)returntrue;returnfalse;,25,分析,题意不清如何检查:首尾之间的字符是否与目标的相应字符相匹配?递归吗?既然让用Substr(),那就直接用=及各种匹配算法,26,参考答案1,intindexOf(strings,stringp)if(p=“”,27,参考答案2,intindexOf(strings,stringp)if(p=“”,28,3-16,已知主串s=abcaabbabcabaacbacba,模式串pat=abcabaa,写出模式串的f值,并由此画出KMP算法匹配的全过程。,29,参考答案,f值的计算:pat=abcabaa“KMP算法的匹配过程s=abcaabbabcabaacbacba“pat=abcabaa“,30,abcaabbabcabaacbacbaabcabaas=4p=4abcaabbabcabaacbacbaabcabaas=4p=f(3)+1=1abcaabbabcabaacbacbaabcabaas=4p=f(0)+1=0s=6p=2abcaabbabcabaacbacbaabcabaas=6p=f(1)+1=0s=7abcaabbabcabaacbacbaabcabaa,31,作业情况,有的同学画出7步,表扬有的同学画出3步,缺步骤,32,6-11,已知Ackerman函数定义如下:n+1m=0Ack(m,n)=Ack(m-1,1)m0,n=0Ack(m-1,Ack(m,n-1)m0,n0(1)写出计算Ackerman函数的递归算法;(2)使用一个数组,写出计算Ackerman函数的非递归算法;(3)根据非递归算法求出Ack(2,1)的值。,33,参考答案,递归算法intAck(intm,intn)if(m=0)returnn+1;if(n=0)returnAck(m-1,1);returnAck(m-1,Ack(m,n-1);,34,非递归求Ack(2,1),35,一种错误的做法,intAck(intm,intn)for(inti=0;i=n;i+)a0i=i+1;for(i=1;i=0)nntop=x;elsereturnx;elseif(nt=0)top+,mmtop=mt-1,nntop=1;elsetop+,mmtop=mt-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论