数据结构 第4 章 字符串.ppt
《数据结构 第4 章 字符串.ppt》由会员分享,可在线阅读,更多相关《数据结构 第4 章 字符串.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中1、串的概念;串的概念;2、串的存储结构;串的存储结构;3、串的运算。串的运算。教学内容教学内容 数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中x的值为整数的值为整数123。x的值为字符串的值为字符串123。串的串的值值值值串的串的长度长度长度长度串的串的名名名名4.1串类型的定义串类型的定义 串(串(串(串(也称也称也称也称字符串字符串字符串字符串):):):):是由是由0个或多个字符组成的有限序列。个或多个字符组成的有限序列。通
2、常记为:通常记为:s=“a1a2a3aian”(n0)。字母、数字或其他字符字母、数字或其他字符 必须有!必须有!不属于串!不属于串!作用:避免与作用:避免与变量名变量名或或数的常量数的常量混淆。混淆。例:例:x=“123”x=123test=“test”基本概念基本概念 数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中空串:空串:空串:空串:不含任何字符的串,串长度不含任何字符的串,串长度=0,用符号,用符号 表示表示。空格串:空格串:空格串:空格串:仅由一个或多个空格组成的串。仅由一个或多个空格组成的串。子串:子串:子串:子串:由串中由串中任意任意个个连续连续的字符组
3、成的子序列。的字符组成的子序列。例:例:S=“JINAN”S1=“”、S2=“NA”、S=“JINAN”主串:主串:主串:主串:包含子串的串。包含子串的串。位置:位置:位置:位置:字符在序列中的序号。字符在序列中的序号。子串在主串中的位置是子串的子串在主串中的位置是子串的首字符首字符首字符首字符在主串中的位置。在主串中的位置。子串。子串。S4=“JAN”非子串(非子串(非非串串S中的中的连续连续字符所组成)。字符所组成)。在在S中的位置:中的位置:3在在S中的位置:中的位置:1串相等的条件:串相等的条件:串相等的条件:串相等的条件:当两个串的长度相等且各个对应位置的字符都当两个串的长度相等且各
4、个对应位置的字符都相等时才相等。相等时才相等。例:例:S=“JINAN”S1=“JINAN”SS1 空串是任意串的子串,任意串是其自身的子串。空串是任意串的子串,任意串是其自身的子串。数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中串的逻辑结构:串的逻辑结构:串的逻辑结构:串的逻辑结构:和线性表极为相似。和线性表极为相似。串的基本操作:串的基本操作:串的基本操作:串的基本操作:和线性表有很大差别。和线性表有很大差别。区别:区别:串的数据对象约定是字符集。串的数据对象约定是字符集。在线性表的基本操作中,大多以在线性表的基本操作中,大多以“单个元素单个元素”作为操作对象;作为
5、操作对象;在串的基本操作中,通常以在串的基本操作中,通常以“串的整体串的整体”作为作为操作对象。操作对象。例如:在串中查找某个子串、求例如:在串中查找某个子串、求 取一个子串、在串的某个位置上插入一个子取一个子串、在串的某个位置上插入一个子 串以及删除一个子串等。串以及删除一个子串等。数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中串的抽象数据类型的定义串的抽象数据类型的定义ADTString数据对象:数据对象:Dai|aiCharacterSetCharacterSet,i=1,2,.,n,n0数据关系:数据关系:R1|ai-1,aiD,i=2,.,n基本操作:基本操作
6、:StrAssignStrAssign(&T,chars)(&T,chars)初始条件:初始条件:chars是字符串常量。是字符串常量。操作结果:操作结果:把把chars赋为赋为T的值。的值。StrCopyStrCopy(&T,S)(&T,S)初始条件:初始条件:串串S存在。存在。操作结果:操作结果:由串由串S复制得串复制得串T。数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中DestroyStringDestroyString(&S)(&S)初始条件:初始条件:串串S存在。存在。操作结果:操作结果:串串S被销毁。被销毁。StrEmptyStrEmpty(S)(S)初始条
7、件:初始条件:串串S存在。存在。操作结果:操作结果:若若S为空串,则返回为空串,则返回TRUE,否则返回否则返回FALSE。StrCompareStrCompare(S,T)(S,T)初始条件:初始条件:串串S和和T存在。存在。操作结果:操作结果:若若ST,则返回值则返回值0;若若S=T,则返回值则返回值=0;若若ST,则返回值则返回值0。“串值大小串值大小”是按是按“词典次序词典次序”进行比较的,如:进行比较的,如:StrCompare(“data”,“stru”)0数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中StrLengthStrLength(S)(S)初始条件
8、:初始条件:串串S存在。存在。操作结果:操作结果:返回返回S的元素个数,称为串的长度。的元素个数,称为串的长度。ConcatConcat(&T,S1,S2)(&T,S1,S2)初始条件:初始条件:串串S1和和S2存在。存在。操作结果:操作结果:用用T返回由返回由S1和和S2联接联接而成的新而成的新串。串。SubStringSubString(&Sub,S,pos,(&Sub,S,pos,lenlen)初始条件:初始条件:串串S存在,存在,1posStrLength(S)且且0lenStrLength(S)pos+1。操作结果:操作结果:用用Sub返回串返回串S的第的第pos个字符起长度个字符起
9、长度为为len的子串。的子串。数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中Index(S,T,pos)Index(S,T,pos)初始条件:初始条件:串串S和和T存在,存在,T是非空串,是非空串,1posStrLength(S)。操作结果:操作结果:若主串若主串S中存在和串中存在和串T值相同的子串,则返回值相同的子串,则返回它在主串它在主串S中第中第pos个字符之后第一次出现的个字符之后第一次出现的位置;否则函数值为位置;否则函数值为0。Replace(&S,T,V)Replace(&S,T,V)初始条件:初始条件:串串S、T和和V存在,存在,T是非空串。是非空串。操
10、作结果:操作结果:用用V替换主串替换主串S中出现的所有与中出现的所有与T相等的相等的不重叠不重叠不重叠不重叠 的子串。的子串。假设假设S=“abcacabcaca”,T=“abca”V=“ab”,则置换之后的则置换之后的S=“abcabca”,而不是而不是“abbca”。数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中 StrInsertStrInsert(&S,pos,T)(&S,pos,T)初始条件:初始条件:串串S和和T存在,存在,1posStrLength(S)1。操作结果:操作结果:在串在串S的第的第pos个字符之前插入串个字符之前插入串T。StrDeleteS
11、trDelete(&S,pos,(&S,pos,lenlen)初始条件:初始条件:串串S存在,存在,1posStrLength(S)-len+1。操作结果:操作结果:从串从串S中删除第中删除第pos个字符起长度为个字符起长度为len的子串。的子串。ClearStringClearString(&S)(&S)初始条件:初始条件:串串S存在。存在。操作结果:操作结果:将将S清为空串。清为空串。ADTString数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中在以上操作中,串赋值在以上操作中,串赋值StrAssign、串比较串比较StrCompare、求求串长串长StrLeng
12、th、串联接串联接Concat以及求子串以及求子串SubString等五种操等五种操作构成串类型的最小操作子集,即作构成串类型的最小操作子集,即这些操作不可能利用其他串操这些操作不可能利用其他串操这些操作不可能利用其他串操这些操作不可能利用其他串操 作来实现作来实现作来实现作来实现。除串清除除串清除ClearString和串销毁和串销毁DestroyString以外的其他串以外的其他串操作均可在最小操作子集上实现。操作均可在最小操作子集上实现。例如,可利用判等、求串长和求子串等操作实现定位函数例如,可利用判等、求串长和求子串等操作实现定位函数Index(S,T,pos):在主串在主串S中取从第
13、中取从第i(i的初值为的初值为pos)个字符个字符起、长度和串起、长度和串T相等的子串同串相等的子串同串T比较,若相等,则求得函数比较,若相等,则求得函数值为值为i,否则否则i值增值增1,直至串,直至串S中从第中从第i个字符起直到串尾的个字符起直到串尾的子串长度小于串子串长度小于串T的长度为止。的长度为止。数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中intIndex(StringS,StringT,intpos)/T为非空串。若为非空串。若S中第中第pos个字符之后存在与个字符之后存在与T相等的子相等的子/串,则返回第一个这样的子串在串,则返回第一个这样的子串在S中的
14、位置,否则返回中的位置,否则返回0。if(pos0)n=StrLength(S);m=StrLength(T);/求串长求串长i=pos;while(i=n-m+1)SubString(sub,S,i,m);if(StrCompare(sub,T)!=0)+i;elsereturni;/找到和找到和T相等的子串相等的子串/while/ifreturn0;/S中不存在满足条件的子串中不存在满足条件的子串/Index数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中4.2串的表示和实现串的表示和实现 因为串是特殊的线性表,故其存储结构与线性表的存储结构因为串是特殊的线性表,故其
15、存储结构与线性表的存储结构类似,只不过类似,只不过组成串的结点是单个字符组成串的结点是单个字符组成串的结点是单个字符组成串的结点是单个字符。4.2.1定长顺序存储表示定长顺序存储表示 定长顺序存储表示定长顺序存储表示,也称为,也称为静态存储分配的顺序串静态存储分配的顺序串。它是。它是用一组用一组地址连续地址连续地址连续地址连续的存储单元来的存储单元来依次存放依次存放依次存放依次存放串中的字符序列。串中的字符序列。“定长定长”、“静态静态”的意思可简单地理解为一个确定的存储空的意思可简单地理解为一个确定的存储空间,它的长度是不变的。间,它的长度是不变的。数据结构数据结构第四章第四章串串制作:制作
16、:计算机科学与技术系 徐振中可直接使用定长的字符数组来定义一个串,可直接使用定长的字符数组来定义一个串,数组的上界数组的上界 预先给出:预先给出:#definemaxstrlen255/可在可在255以内定义最大串长。以内定义最大串长。typedefunsigndecharsstringmaxstrlen+1;/0号单元存放串的长度。号单元存放串的长度。串的实际长度可在这个预定义长度的范围内随意设定,串的实际长度可在这个预定义长度的范围内随意设定,超过预定义长度的串值则被舍去,称之为超过预定义长度的串值则被舍去,称之为“截断截断”。数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系
17、 徐振中例:对于串例:对于串ch=“Thisisadog.”用上述两种方法分别表示为:用上述两种方法分别表示为:Thisisadog.014Thisisadog.串长串长串长串长的两种表示方法:的两种表示方法:一种是在串的存贮区首地址一种是在串的存贮区首地址显式地显式地显式地显式地记录串的长度。记录串的长度。另一种是另一种是隐式的隐式的隐式的隐式的,在串之后加入一个串的结束标志。,在串之后加入一个串的结束标志。PASCAL语言中的串类型就采用这种方法。语言中的串类型就采用这种方法。如如C中使用中使用“0”,“0”不计入串长。不计入串长。数据结构数据结构第四章第四章串串制作:制作:计算机科学与技
18、术系 徐振中 定长顺序存储表示时串的操作的实现定长顺序存储表示时串的操作的实现 1、串联接、串联接Concat(&T,S1,S2)假设串假设串T是由串是由串S1联结串联结串S2得到的,则只要进行相应的得到的,则只要进行相应的“串值复制串值复制”操作即可,需要时进行操作即可,需要时进行“截断截断”。串串T值值S10+S20 MAXSTRLENS10MAXSTRLENS10=MAXSTRLEN结果正确结果正确结果正确结果正确 结果结果结果结果 S2S2被被被被“截断截断截断截断”结果结果结果结果 T=S1T=S1数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中StatusCo
19、ncat(SString&T,SStringS1,SStringS2)if(S10+S20=MAXSTRLEN)if(S10+S20=MAXSTRLEN)/未截断未截断T1.S10=S11.S10;TS10+1.S10+S20=S21.S20;T0=S10+S20;uncut=TRUE;elseelseif(S10MAXSTRSIZE)if(S10MAXSTRSIZE)/截断截断T1.S10=S11.S10;TS10+1.MAXSTRLEN=S21.MAXSTRLENS10;T0=MAXSTRLEN;uncut=FALSE;elseelse/截断截断(仅取仅取S1)T0.MAXSTRLEN=S
20、10.MAXSTRLEN;uncut=FALSE;returnuncut;/Concat串联接串联接Concat算法描述算法描述数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中2、求子串、求子串SubString(&Sub,S,pos,len)求子串的过程即为复制字符序列的过程,将串求子串的过程即为复制字符序列的过程,将串S中的第中的第pos个字符开始的长度为个字符开始的长度为len的字符串复制到的字符串复制到串串Sub中。中。注:注:注:注:1)、不会出现、不会出现“截断截断”的情况。的情况。2)、可能出现、可能出现“参数非法参数非法”的情况,应返回的情况,应返回ERR
21、OR。数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中StatusSubString(SString&Sub,SStringS,intpos,intlen)if(posS0|lenS0-pos+1)returnERROR;Sub1len=Spospos+len-1;Sub0=len;returnOK;/SubString求子串求子串SubString算法描述算法描述数据结构数据结构第四章第四章串串制作:制作:计算机科学与技术系 徐振中 定长顺序存储表示时串操作的缺点定长顺序存储表示时串操作的缺点 1、需事先预定义串的最大长度,、需事先预定义串的最大长度,这在程序运行前是很
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第4 字符串
限制150内