资源描述:
《数据结构第4章 串ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章串和数组本章要点串和数组的概念串的简单应用数组的存储形式4.1串及其基本运算4.1.1串的基本概念1.串的定义串是由零个或多个任意字符组成的字符序列。一般记作:2、空串(string)是长度为零的串,它不包含任何字符。例如:""3、空白串(string)是由一个或多个空格组成的串。例如:""2.常用术语子串与主串:串中任意连续的字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。子串的位置:子串的第一个字符在主串中的序号称为子串的位置。串相等称两个串是相等的,是指两个串的长度相等且对应位置的字符都相等。4.1.2串的基本运算(1)求串长Str_
2、Length(s)初始条件:串s存在。操作结果:求出串s的长度。intStr_Length(char*s);例如:printf("%d",Str_Length(s));(2)串赋值Str_Assign(s1,s2)初始条件:s1是一个串变量,s2是一个串常量或是一个串变量。操作结果:将s2串值赋给s1,s1原来的值被覆盖掉。char*Str_Assign(char*to,char*from);//例如:Str_Assign(s3,s1);//s3="www",s1串不变4.1.2串的基本运算(3)连接操作:Str_Concat(s1,s2)初始条件:串s1,
3、s2存在。操作结果:将一个串的串值紧接着放在另一个串的后面,连接成一个串。例如:s1="he",s2="nan",结果s1="henan"。(4)求子串Str_Sub(s,i,len)初始条件:串s存在,1≤i≤StrLength(s),0≤len≤StrLength(s)-i+1。操作结果:返回从串s的第i个字符开始的长度为len的子串。len=0得到的是空串。例如:Str_Sub("abcdefghi",3,4)="cdef"。(5)串比较Str_Equal(s1,s2)初始条件:串s1,s2存在。操作结果:若s1==s2,返回值为1;否则返回结果为0。
4、intStr_Equal(char*s1,char*s2);比较s1和s2大小,当s1s2和s1=s2时,分别返回小于0、大于0和等于0的值(6)子串定位Str_Index(s,t):找子串t在主串s中首次出现的位置。操作条件:串s,t存在。操作结果:若t∈s,则操作返回t在s中首次出现的位置,否则返回值为-1。如:Str_Index("abcdebda","bc")=2Str_Index("abcdebda","ba")=-1(7)串插入Str_Insert(s,i,t)初始条件:串s,t存在,1≤i≤StrLength(s)+1。操作结果:
5、将串t插入到串s的第i个字符位置上,s的串值发生改变。(8)串删除Str_Delete(s,i,len)初始条件:串s存在,1≤i≤StrLength(s),0≤len≤StrLength(s)-i+1。操作结果:删除串s中从第i个字符开始的长度为len的子串,s的串值改变。(9)串替换Str_Rep(s,t,r)初始条件:串s,t,r存在,t不为空。操作结果:用串r替换串s中出现的所有与串t相等的不重叠的子串,s的串值改变。4.2串的定长顺序存储及基本运算1、串的顺序存储就是把串所包含的字符序列依次存入连续的存储单元中去,也就是用向量来存储串。2、顺序串的
6、存储结构类型定义如下:#defineMaxSize50typedefstruct{chardata[MaxSize];intlen;}SqString;(1)字符串赋值初始条件:cstr是一个字符串常量。操作结果:把字符串常量cstr的内容赋给str所指向的存储空间。voidStr_Assign(SqString*str,charcstr[]){inti;for(i=0;cstr[i]!=' ';i++)str->data[i]=cstr[i];str->data[i+1]=' ';str->len=i;}(2)字符串比较初始条件:串s,t存在。操作结果
7、:若s1==s2,操作返回值为1;否则返回结果为0。intStr_Equal(SqStrings,SqStringt){intsame=1,i;if(s.len!=t.len)same=0;/*长度不相等时返回0*/elsefor(i=0;i8、SqStringt){SqStringstr;int