书签 分享 收藏 举报 版权申诉 / 35
上传文档赚钱

类型数据结构课件(部分6).ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2823266
  • 上传时间:2022-05-29
  • 格式:PPT
  • 页数:35
  • 大小:238.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《数据结构课件(部分6).ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    数据结构 课件 部分
    资源描述:

    1、1234基本操作的功能说明基本操作的功能说明567上述上述13种基本操作中种基本操作中,下面下面5种操作构成最小操作子集种操作构成最小操作子集: 串赋值串赋值 StrAssign; 串比较串比较 StrCompare; 求串长求串长 StrLength; 串联结串联结 Concat; 求子串求子串 Substring;其它操作可以用其实现其它操作可以用其实现例如定位函数例如定位函数Index(S,T,pos)的算法如右的算法如右:int Index(String S, String T, int pos) int i,n,m; String sub; if(pos 0) n = StrLeng

    2、th(S); m = StrLength(T); i = pos; while(i=n-m+1) SubString(sub,S,i,m); if(StrCompare(sub,T)!=0)+i; else return i; /while / if return 0; / Index84.2 4.2 串的表示和实现串的表示和实现#define MAXSTRLEN 255 / 串的长度最大为串的长度最大为255typedef unsigned char SStringMAXSTRLEN+1; / 0号单元存放串的长度号单元存放串的长度, 其最大值刚好是其最大值刚好是255.当超出当超出2552

    3、55个字符时个字符时, ,串的多余内容被舍去串的多余内容被舍去, ,叫做叫做“截断截断”以下用串联结和求子串为例介绍这种存储以下用串联结和求子串为例介绍这种存储9S1S2T0 maxstrlen0 maxstrlenS10+S20 MAXSTRLEN 时截断部分10status Concat(SString &T, SString S1, SString S2)/用用T T返回由返回由串串S1S1和和S2S2联结而成的新串。若未被截断联结而成的新串。若未被截断, ,则返回则返回1;1;否则返回否则返回0 0。 if ( S10+S20 = MAXSTRLEN) /未被截断未被截断 T1.S10

    4、 = S11.S10; TS10+1. S10+S20 = S21.S20; T0 = S10+S20; uncut = 1; elseif (S10 MAXSTRLEN) / 截断截断 T1.S10 = S11.S10; TS10+1. MAXSTRLEN = S21. MAXSTRLEN-S10; T0 = MAXSTRLEN; uncut = 0; else / 截断截断(仅取仅取S1) T0. MAXSTRLEN = S10. MAXSTRLEN; uncut = 0; / if return uncut; / Concat112.2.求子串求子串SubString(&Sub,S,po

    5、s,len)的算法的算法status SubString(SString &Sub, SString S, int pos, int len)/用用SubSub返回串返回串S S的第的第pospos个字符起长度为个字符起长度为lenlen的子串的子串。 其中其中,1=pos=StrLength(S) 且且 0=len=StrLength(S) -pos + 1 。 if ( pos s0 | len s0 - pos +1 ) return ERROR; Sub1.len = Spos.pos+len-1; Sub0 = len; return OK; / SubStringSSub1 pos

    6、len12 也是用一组连续的存储单元存储串值的字符序列也是用一组连续的存储单元存储串值的字符序列. .但存储空间是在程序执行过程中动态分配得到的但存储空间是在程序执行过程中动态分配得到的. . 在在C C语言中语言中, ,用字符用字符“0”0”表示串的终结表示串的终结,“0”,“0”不计入串不计入串长长. .typedef struct char *ch; / 若是非空串若是非空串,则按实际长度分配则按实际长度分配,否则为否则为NULL; int length; / 串长度串长度 HString; 以下用串插入操作以下用串插入操作 StrInsert(&S,pos,TStrInsert(&S,

    7、pos,T) )为例介绍这种存储为例介绍这种存储13串插入串插入StrInsert(&S,pos,T)的算法的算法1415161718194.2.3 4.2.3 串的块链存储结构串的块链存储结构20 typedef structtypedef struct / / 串的链表结构串的链表结构 Chunk Chunk * *head, head, * *tail; / tail; / 串的串的头和尾指针头和尾指针 int curlenint curlen; / ; / 串的串的当前长度当前长度 LString LString; ;2122例:主串例:主串S=ababcabcacbab,模式,模式T

    8、=abcaca b a b c a b c a c b a bi=3,j=3失败;失败;i回溯到回溯到2,j回溯到回溯到1ijijij第第 1趟趟a b c a c 23例:主串例:主串S=ababcabcacbab,模式,模式T=abcaca b a b c a b c a c b a bi=3,j=3失败;失败;i回溯到回溯到2,j回溯到回溯到1ji第第 1趟趟a b c a c 24例:主串例:主串S=ababcabcacbab,模式,模式T=abcaca b a b c a b c a c b a bi=2,j=1失败失败i回溯到回溯到3,j回溯到回溯到1第第 2趟趟ija b c a

    9、 c 25例:主串例:主串S=ababcabcacbab,模式,模式T=abcaca b a b c a b c a c b a bi=2,j=1失败失败i回溯到回溯到3,j回溯到回溯到1第第 2趟趟ija b c a c 26例:主串例:主串S=ababcabcacbab,模式,模式T=abcaca b a b c a b c a c b a ba b c a c i=7,j=5失败失败i回溯到回溯到4,j回溯到回溯到1第第 3趟趟ijijijijij27例:主串例:主串S=ababcabcacbab,模式,模式T=abcaca b a b c a b c a c b a ba b c a

    10、c i=7,j=5失败失败i回溯到回溯到4,j回溯到回溯到1第第 3趟趟ij28例:主串例:主串S=ababcabcacbab,模式,模式T=abcaca b a b c a b c a c b a ba b c a c i=4,j=1失败失败i回溯到回溯到5,j回溯到回溯到1第第 4趟趟ij29例:主串例:主串S=ababcabcacbab,模式,模式T=abcaca b a b c a b c a c b a ba b c a c i=4,j=1失败失败i回溯到回溯到5,j回溯到回溯到1第第 4趟趟ij30例:主串例:主串S=ababcabcacbab,模式,模式T=abcaca b a

    11、b c a b c a c b a ba b c a c i=5,j=1失败失败i回溯到回溯到6,j回溯到回溯到1第第 5趟趟ij31例:主串例:主串S=ababcabcacbab,模式,模式T=abcaca b a b c a b c a c b a ba b c a c i=5,j=1失败失败i回溯到回溯到6,j回溯到回溯到1第第 5趟趟ij32例:主串例:主串S=ababcabcacbab,模式,模式T=abcaca b a b c a b c a c b a ba b c a c i=11,j=6,T中全部中全部字符都比较完毕,字符都比较完毕,匹配成功。匹配成功。第第 6趟趟ijiji

    12、jijij3334BF算法算法的复杂度分析的复杂度分析设设n = StrLength(S);m = StrLength(Tn = StrLength(S);m = StrLength(T););设匹配成功发生在设匹配成功发生在s si i处,则字符比较次数在前面处,则字符比较次数在前面i-1i-1趟匹配中共趟匹配中共比较了比较了i-1i-1次,第次,第i i趟成功的匹配共比较了趟成功的匹配共比较了m m次,所以总共比较了次,所以总共比较了i-1+mi-1+m次,所有匹配成功的可能共有次,所有匹配成功的可能共有n-m+1n-m+1种,设从种,设从s si i开始与开始与t t串串匹配成功的概率为

    13、匹配成功的概率为p pi i,在等概率情况下,在等概率情况下p pi i=1/(n-m+1)=1/(n-m+1),因此最好,因此最好情况下平均比较的次数是:情况下平均比较的次数是:2)()1()1(111111mnmimipmnimnmnii35最坏情况最坏情况, ,T = “00000001”T = “00000001”S = S = “00000000000000000000000000000000000000000000000001”“00000000000000000000000000000000000000000000000001”设匹配成功发生在设匹配成功发生在s si i处,则在前面处,则在前面i-1i-1趟匹配中共比较了趟匹配中共比较了(i-1)(i-1)* *m m次,第次,第i i趟成功的匹配共比较了趟成功的匹配共比较了m m次,所以总共比较了次,所以总共比较了i i* *m m次,因次,因此最坏情况下平均比较的次数是:此最坏情况下平均比较的次数是:即最坏情况下的时间复杂度是即最坏情况下的时间复杂度是O(nO(n* *m)m)。而而0101串是计算机应用中最串是计算机应用中最普遍的一种,所以有必要改进该模式匹配算法。普遍的一种,所以有必要改进该模式匹配算法。 2) 2()()(111111mnmmimipmnimnmnii

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:数据结构课件(部分6).ppt
    链接地址:https://www.163wenku.com/p-2823266.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库