数据结构串学习.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构串学习.pptx》由会员分享,可在线阅读,更多相关《数据结构串学习.pptx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 4.1 4.1 串类型的定义串类型的定义4.1.1 4.1.1 串的定义 串串(String)(String)是零个或多个字符组成的有限序是零个或多个字符组成的有限序列。一般记作列。一般记作S=S=a a1 1a a2 2a a3 3a an n,其中,其中S S是串名,是串名,单引号单引号括起来的字符序列是串值;括起来的字符序列是串值;a ai i(1in)(1in)可以是字母、数字或其它字符;串中所包含的字可以是字母、数字或其它字符;串中所包含的字符个数称为该串的长度。符个数称为该串的长度。长度为零的串称为空串长度为零的串称为空串(Empty String)(Empty String),
2、它,它不包含任何字符,用不包含任何字符,用表示。通常将仅由一个表示。通常将仅由一个或多个空格组成的串称为空白串或多个空格组成的串称为空白串(Blank String)(Blank String),如,如 表示长度为表示长度为1 1的空白串。的空白串。第1页/共31页 串中任意个连续字符组成的子序列称为该串的串中任意个连续字符组成的子序列称为该串的子串子串,包含子串的串相应地称为,包含子串的串相应地称为主串主串。通常将子串。通常将子串在主串中首次出现时的该子串的首字符对应的主串在主串中首次出现时的该子串的首字符对应的主串中的序号,定义为中的序号,定义为子串在主串中的序号子串在主串中的序号(或位置
3、)。(或位置)。例如,设例如,设A A和和B B分别为分别为 A=A=This is a stringThis is a string B=B=isis 则则B B是是A A的子串,的子串,A A为主串。为主串。B B在在A A中出现了两中出现了两次,其中首次出现所对应的主串位置是次,其中首次出现所对应的主串位置是3 3。因此,。因此,称称B B在在A A中的序号(或位置)为中的序号(或位置)为3 3特别地,空串是任意串的子串,任意串是其自身的子串。特别地,空串是任意串的子串,任意串是其自身的子串。第2页/共31页4.1.2 4.1.2 串的抽象数据类型定义串的抽象数据类型定义具体见课本具体见
4、课本 P71P71基本操作函数基本操作函数n串赋值:串赋值:StrAssign(S,T)StrAssign(S,T)n串复制:串复制:Strcopy(S,T)Strcopy(S,T)n求串长:求串长:StrLength(S)StrLength(S)n串联接:串联接:Concat(&T,S1,S2)Concat(&T,S1,S2)n求子串:求子串:SubString(&S,start,length,len)SubString(&S,start,length,len)n子串定位:子串定位:Index(S,T,POS)Index(S,T,POS)n置换:置换:Replace(&S,T,V)Repla
5、ce(&S,T,V)n插入子串:插入子串:StrInsert(&S,S,T)StrInsert(&S,S,T)n删除子串:删除子串:StrDeleteStrDelete(&(&S,pos,lengthS,pos,length)第3页/共31页4.1.3 4.1.3 串的基本操作串的基本操作定义下列几个变量:定义下列几个变量:char s120=dirtreeformat,s220=file.mem;char s330,*p;int result;例如:例如:printf(%d,strlen(s1);/输出输出13(1)求串长求串长(length)int strlen(char s);/求串的长
6、度求串的长度第4页/共31页例如:例如:strcpy(s3,s1);/s3=dirtreeformatchar*strcpy(char to,char from);该函数将串该函数将串from复制到串复制到串to中,并且返回一个中,并且返回一个指向串指向串to的开始处的指针。的开始处的指针。(2)串复制)串复制(copy)第5页/共31页(3)联接联接(concatenation)char strcat(char to,char from)该函数将串该函数将串from复制到串复制到串to的末尾,并且返回的末尾,并且返回一个指向串一个指向串to的开始处的指针。的开始处的指针。例如:例如:strc
7、at(s3,/)strcat(s3,s2);/s3=dirtreeformat/file.mem第6页/共31页(4)串比较(串比较(compare)int strcmp(chars1,char s2);该函数比较串该函数比较串s1和串和串s2的大小,的大小,当返回值小于当返回值小于0,表示,表示s1s2例如:例如:result1=strcmp(baker,Baker)/result10 result2=strcmp(12,12);/result2=0 result3=strcmp(Joe,Joseph);/result30第7页/共31页(5)字符定位)字符定位(index)char str
8、chr(char s,char c);该函数是找该函数是找c在字符串中第一次出现的位置,若在字符串中第一次出现的位置,若找到则返回该位置,否则返回找到则返回该位置,否则返回NULL。例如:例如:p=strchr(s2,.);/p 指向指向file之后的位之后的位置置 if(p)strcpy(p,.cpp);/s2=file.cpp第8页/共31页 上述串的操作是最基本的,其中后四个还有变种形式:strncpy,strncat,strncmp,strnchr。串的其余操作可由这些基本操作组合而成。例1、求子串 求子串的过程即为复制字符序列的过程,将串S中的第pos个字符开始长度为len的字符复制
9、到串SUB中。void substr(string sub,string s,int pos,int len)if(posstrlen(s)|lenstrlen(s)-pos+1)return ERROR;strncpy(sub,&spos,len);return OK;第9页/共31页在主串在主串S S中取从第中取从第i(ii(i的初值为的初值为pos)pos)个字符起、长度和个字符起、长度和串串T T相等的子串和相等的子串和T T比较,若相等,则求得函数值为比较,若相等,则求得函数值为i i,否则值增否则值增1 1直至直至S S中不存在和串中不存在和串T T相等的子串为止。相等的子串为止。
10、例例2 2、串的定位、串的定位index(S,T,pos)index(S,T,pos)int index(string s,string T,int pos)if(pos0)n=strlen(s);m=strlen(t);i=pos;while(i=n-m+1)substr(sub,s,i,m);if(strcmp(sub,T)!=0)+i;else return(i);/while /if return(0);/index第10页/共31页4.2.1 4.2.1 定长顺序存储表示定长顺序存储表示4.2 4.2 串的表示和实现串的表示和实现 定长顺序存储表示定长顺序存储表示,也称为静态存储分配
11、的也称为静态存储分配的顺应表。它是用一组连续的存储单元来存放串顺应表。它是用一组连续的存储单元来存放串中的字符序列。中的字符序列。在串的定长顺序存储结构中,按照预定义在串的定长顺序存储结构中,按照预定义的大小,为每个定义的串变量分配一个固定长的大小,为每个定义的串变量分配一个固定长度的存储区,具体描述如下:度的存储区,具体描述如下:#define MAXSTRLEN 255 /用户可定义串长的最大值typedef unsigned char SStringMAXSTRLEN+1;/0号单元存放串的长度号单元存放串的长度 第11页/共31页 一般还可使用一个不会出现在串中的特殊一般还可使用一个不
12、会出现在串中的特殊字符在串值的尾部来表示串的结束。例如,字符在串值的尾部来表示串的结束。例如,C C语言中以字符语言中以字符00表示串值的终结。此时,表示串值的终结。此时,串长是一个隐含值,有时不方便进行某些串操串长是一个隐含值,有时不方便进行某些串操作。作。因此在上述定义中,串空间最大值因此在上述定义中,串空间最大值maxstrlenmaxstrlen为为255255,但最多只能存放,但最多只能存放254254个字符个字符的原因,因为必须留一个字节来存放的原因,因为必须留一个字节来存放00字符。若不设终结符,可用一个整数来表示串字符。若不设终结符,可用一个整数来表示串的长度,的长度,那么该长
13、度减那么该长度减1 1的位置就是串值的最的位置就是串值的最后一个字符的位置后一个字符的位置(在在C C语言中语言中)。第12页/共31页例例1 1、串连接、串连接Concat(&TConcat(&T,S1S1,S2)S2)假设假设S1S1、S2S2和和T T都是都是SstringSstring型的串变量,且串型的串变量,且串T T是是由由S1S1联结串联结串S2S2得到的。即串得到的。即串T T的值的前段和串的值的前段和串S1S1的值的值相等,串相等,串T T的值后段和串的值后段和串S2S2的值相等,则只要进行相的值相等,则只要进行相应的应的“串值复制串值复制”操作,但需要对于超长部分实施操作
14、,但需要对于超长部分实施“截断截断”操作。操作。串串T T的值可能出现的三种情况:的值可能出现的三种情况:1.1.S10+S20S10+S20 maxstrlenmaxstrlen,得到正确结果;,得到正确结果;2.2.S10 maxstrlenS10S10+S20 maxstrlenmaxstrlen,串,串T T包含串包含串S1S1和串和串S2S2的一个子串;的一个子串;3.3.S10=maxstrlenS10=maxstrlen,串,串T=T=串串S1S1;第13页/共31页Status Concat(Sstring&T,Sstring S1,Sstring S2)Status Conc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 串学习 学习
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内