《数据结构实用教程》课件第四章 串.ppt

《数据结构实用教程》课件第四章 串.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

将串中的字符顺序地存放在内存一片连续的存储单元中。设串S=‘a1a2...an’,则顺序存贮结构在内存贮器中的存贮示意图如图所示:a1a2a3an1、串的定长顺序表示串的定长顺序存储表示可用定长数组描述:#defineMAXSTRLEN255//用户可在255以内定义最大串长typedefunsignedcharSString[MAXSTRLEN+1];//0号单元存放串的长度#define是在预编译时处理,只能作简单的字符串替换,而typedef是在编译时处理,而是来定义新类型。实现串的运算时,其基本操作为“字符序列的复制”。串的实际长度可在这个预定义长度的范围内随意设定,超过预定义长度的串值则被舍去,称之为“截断”。特点:下面以串联接和求子串为例讨论之。2.串的另外两种表示方法

(1)在顺序串中,用一个指针来指向最后一个字符,C语言的表示如下:

typedefstruct

{chardata[MAXSIZE];

intcurlen;

}SeqString;

定义一个串变量:SeqStrings;

这种存储方式可以直接得到串的长度:s.curlen+1

如图(2)在串尾存储一个不会在串中出现的特殊字符作为串的终结符,以此表示串的结尾。比如C语言中处理定长串的方法就是这样,它是用‘\0’来表示串的结束,如图所示。这种存储方法不能直接得到串的长度,而是用判断当前字符是否是‘\0’来确定串是否结束,从而求得串的长度。此时的串长为隐含值,有时不便于进行某些操作。3.讨论顺序串中定长串连接的基本运算。串连接:把两个串S1和S2首尾连接成一个新串S,即S≤S1+S2。实现串的运算时,其基本操作为“字符序列的复制”。下面以串连接为例讨论之,串的连接算法中需分三种情况处理,基于串S1和S2长度的不同情况,串T值的产生可能有如下三种情况:(1)S1[0]+S2[0]≤MAXSTRLEN,得到的串T是正确的结果。(2)S1[0]MAXSTRSIZE,而S1[0]+S2[0]MAXSTRLEN,则将串S2的一部分截断,得到的串T只包含S2的一个子串。(3)S1[0]=MAXSTRSIZE,则得到串T不是联接后的值,而是和串S1的值相等。算法描述如下:StatusConcat(SStringT,SStringS1,SStringS2){//用T返回S1和S2连接而成的新串。若未截断,则返回TRUE,否则FALSEinti;if(S1[0]+S2[0]=MAXSTRLEN){//未截断for(i=1;i=S1[0];i++)T[i]=S1[i];for(i=1;i=S2[0];i++)T[S1[0]+i]=S2[i];T[0]=S1[0]+S2[0];returnTRUE;}else

{//截断S2

for(i=1;i=S1[0];i++)

T[i]=S1[i];

for(i=1;i=MAXSTRLEN-S1[0];i++)

T[S1[0]+i]=S2[i];

T[0]=MAXSTRLEN;

returnFALSE;

}

returnuncut;

}//Concat综上操作可见,在顺序存储结构中,实现串操作的原操作为“字符序列的复制”。另一操作特点是,如果在操作中出现串值序列的长度超过上界MAXSTRLEN时,约定用截尾法处理。克服这个弊病唯有不限定串长的最大长度,即动态分配串值的存储空间。仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程中动态分配而得。在C语言中,存在一个称之为“堆”的自由存储区,并由C语言的动态分配函数malloc()和free()来管理。利用函数malloc()为每个新产生的串分配一块实际串长所需的存储空间,若分配成功,则返回一个指向起始地址的指针,作为串的基址,同时,为了以后处理方便,约定串长也作为存储结

文档评论(0)

酱酱 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档