数据结构与算法教学课件ppt作者王曙燕chapter4串.ppt
- 文档编号:1080788
- 上传时间:2022-10-16
- 格式:PPT
- 页数:25
- 大小:380KB
数据结构与算法教学课件ppt作者王曙燕chapter4串.ppt
《数据结构与算法教学课件ppt作者王曙燕chapter4串.ppt》由会员分享,可在线阅读,更多相关《数据结构与算法教学课件ppt作者王曙燕chapter4串.ppt(25页珍藏版)》请在冰豆网上搜索。
4.2串及其运算,4.3串的存储结构及实现,第4章串,4.4串的模式匹配,4.1应用实例,4.5实例分析与实现,4.6算法总结,4.1应用实例,应用实例:
文本编辑软件文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作,甚至用于报刊和书籍的编辑排版。
常用的简单文本编辑程序Edit,和文字处理软件WPS、Word等,究其实质,都是修改字符数据的形式或格式。
可用于文本编辑的程序很多,功能不同且强弱差别很大,但基本操作是一样的,一般都包含串的查找、插入和删除等基本操作。
4.2串及其运算,是由零个或多个字符组成的有限序列。
S=a0a1a2an-1(n0),子串:
第4章串,串中任意个连续的字符组成的子序列。
主串:
包含子串的串相应地称为主串。
位置:
字符在序列中的序号。
子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。
相等:
两个串的长度相等,并且对应位置的字符都相等。
空串与空白串,串的抽象数据类型的定义,第4章串,ADTString数据元素:
D=ai|aiCharacterSet,记为V,i=1,2,,n;n0数据关系:
R|ai,ai+1V,i=1,2,n-1;n-10基本操作:
(1)StrAssign(S,chars)
(2)StrInsert(S,pos,T)(3)StrDelete(S,pos,len)p106ADTString,4.2串及其运算,基本操作:
第4章串,StrInsert(S,pos,T)初始条件:
串S和T存在,1posStrLength(S)+1。
操作结果:
在串S的下标为pos的字符之前插入串T。
StrInsert(S,pos,T),例如:
S=chater,T=rac,则执行StrInsert(S,3,T)之后,S=character,4.2串及其运算,基本操作:
第4章串,StrDelete(S,pos,len)初始条件:
串S存在1posStrLength(S)+1。
操作结果:
从串S中删除下标为pos的字符起长度为len的子串。
StrDelete(S,pos,len),例如:
S=character,则执行StrDelete(S,3,3)之后,S=chater,4.2串及其运算,基本操作:
第4章串,StrCat(S,T)初始条件:
串S和T存在。
操作结果:
返回由S和T联接而成的新串。
StrCat(S,T),例如:
StrCat(man,kind),=mankind,4.2串及其运算,基本操作:
第4章串,SubString(Sub,S,pos,len)初始条件:
串S存在,1posLength(S)且0lenLength(S)-pos+1。
操作结果:
用Sub返回串S的第pos个字符起长度为len的子串。
SubString(Sub,S,pos,len),例如:
SubString(sub1,commander,4,3),sub1=man,SubString(sub2,commander,4,7)sub2=?
SubString(sub3,beijing,7,2)=?
sub3=?
起始位置和子串长度之间存在约束关系!
4.2串及其运算,基本操作:
第4章串,StrIndex(S,pos,T)初始条件:
主串S和T存在,T是非空串操作结果:
若主串S中存在和串T值相同的子串,则返回它在主串S中从第pos个字符开始第一次出现的位置;否则函数值为0。
StrIndex(S,pos,T),例如:
S=abcaabcaaabc,T=bca,StrIndex(S,1,T),=2,StrIndex(S,4,T),=6,4.2串及其运算,基本操作:
第4章串,StrReplace(S,T,V)初始条件:
串S,T和V均已存在,且T是非空串。
操作结果:
用V替换主串S中出现的所有与(模式串)T相等的不重叠的子串。
StrReplace(S,T,V),例如:
S=abcaabcaaabca,T=bca,V=x,S,=axaxaax,给出一个由小写字母组成的串s和一个不超过s的长度的正整数l,求s所有长度不小于l的子串在s中不重叠地重复出现次数最多的子串。
4.2串及其运算,对于串的基本操作集可以有不同的定义方法,在使用高级程序设计语言中的串类型时,应以该语言的参考手册为准。
基本操作,第4章串,4.2串及其运算,定长顺序串,4.3串的存储及实现,常用的实现方法:
第4章串,堆串,块链串,定长顺序串,常用的实现方法:
第4章串,存储表示:
静态数组结构,#defineMAXLEN40typedefstructcharstrMAXLEN;intlength;SString;,4.3串的存储及实现,定长顺序串,常用的实现方法:
第4章串,基本操作:
插入、删除、复制、判空、比较、求串长、清空、连接、求子串。
参见P7880页,4.3串的存储及实现,堆串,常用的实现方法:
第4章串,存储表示:
动态地分配一组地址连续的存储单元。
typedefstructchar*ch;intlen;HString;,4.3串的存储及实现,堆串,常用的实现方法:
基本操作:
赋值、插入、删除。
参见P8182页,4.3串的存储及实现,块链串,常用的实现方法:
第4章串,存储表示:
可用链表来存储串值,由于串的数据元素是一个字符,它只有8位二进制数,因此用链表存储时,通常一个结点中存放的不是一个字符,而是一个字符串。
#defineBLOCK_SIZE4typedefstructBlockcharchBLOCK_SIZE;structBlock*next;Block;typedefstructBlock*head,*tail;intcurlen;BLString;,4.3串的存储及实现,4.4简单的行编辑器,整个文本编辑区可以看成是一个字符串,称为文本串。
每一页是文本串的一个子串,每一行是每一页的一个子串,即:
同一行的串用定长结构(80个字符),行和行之间用行指针相链接,页和页之间用页指针相链接。
4.5串的模式匹配算法,首先,回忆一下串匹配(查找)的定义:
StrInex(S,pos,T),初始条件:
主串S和T存在,T是非空串并且1posLength(S)。
操作结果:
若主串S中存在和串T值相同的子串,则返回它在主串S中从第pos个字符开始第一次出现的位置;否则函数值为0。
“子串在主串中的位置”意指子串中的第一个字符在主串中的位序。
例如:
S=abcaabcaaabc,T=bcaStrInex(S,1,T)=,StrInex(S,4,T)=,6,2,4.5串的模式匹配算法,下面讨论以定长顺序结构表示串时的几种算法。
简单匹配算法(Brute-Force),首尾匹配算法,KMP(D.E.Knuth,J.H.Morris,V.R.Pratt)算法,4.5串的模式匹配算法,*4.4串的模式匹配算法,简单匹配算法(Brute-Force),intStrIndex(SStrings,intpos,SStringt)inti,j,start;if(t.len=0)return(0);start=pos;i=start;j=0;while(i=t.len)return(start);elsereturn(-1);,首尾匹配算法,先比较模式串中的第一个字符,再比较模式串中的最后一个字符,最后比较模式串中从第二个到第n-1个字符,4.5串的模式匹配算法,4.5串的模式匹配算法,KMP(D.E.Knuth,J.H.Morris,V.R.Pratt)算法,改进i指针回溯问题,使得匹配算法达到O(m+n),基本思想:
每当一趟匹配过程中出现字符比较不等时,主串S中的i指针不需回溯,而是利用已经得到的“部分匹配”结果将模式向右“滑动”尽可能远的一段距离后,继续进行比较。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 教学 课件 ppt 作者 王曙燕 chapter4