资源描述:
《[工学]java语言 -串》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、内容提要串是数据元素为字符的线性表,串的定义及操作串的基本操作,用串的基本操作来编写算法求串的其他操作串的存储结构。静态存储和动态存储(块链结构、堆结构)存储的优缺点。模式匹配算法1串的初步认识串(字符串)被定义为由零个或多个字符组成的有限序列。记为:s=“a1a2…an”(n>=0)其中,s是串的名,也称为串变量。引号内的字符序列为串值;ai(1≤i≤n)称为串元素,可以是字母、数字或其它字符。例如:s1=“Data”s2=“Structure”s3=“DataStructure”s4=“DataStructure”2基本术语长度串中所包含的字符个数n空串长度为0的串
2、子串串中任意个连续的字符组成的子序列主串包含子串的串称为该子串的主串位置字符在序列中的序号子串的位置子串的第一个字符在主串中的位置3s1=“Data”s2=“Structure”s3=“DataStructure”s4=“DataStructure”长度分别为4、9、13和14;并且s1和s2都是s3和s4的子串,s1在s3和s4中的位置都是0,而s2在s3中的位置是4,在s4中的位置则是5。4主要的基本操作求子串substring(s,start,len)返回值为串s中第start个字符起,长度为len的字符序列插入insert(s,pos,t)在串s的第pos个字符
3、之后插入串t删除delete(s,pos,len)从串s中删去第pos个字符起长度为len的子串定位position(s,t)若t在s中存在,则返回t在主串s中的位置,否则函数值为0替换replace(s,t,v)操作结果是以串v替换所有在串s中出现的和非空串t相等的子串判相等equal(s,t)若s和t相等,则返回true否则返回false。求长度length(s)返回s中字符的个数5基本操作的例s1=“Data”s2=“Structure”s3=“DataStructure”s4=“DataStructure”length(s3)返回值为13length(s4)返回
4、值为14position(s4,s2)返回值为5substring(s3,4,3)返回一个字符串“Str”delete(s4,5,3)执行后串s4的值为“Dataucture”replace(s4,s1,s2)执行后串s4的值为“StructureStructure”6字符串S=“datastructures”0123456789101112131415datastructures‘ ’存储地址存储字符字节编址方式7非紧缩存储方式以字为单位顺序存储字符串的每个字符,即一个存储单元只存储一个字符0d1a2t3a45s6t7r8u9c10t11u12r13e14s15‘
5、0’存储地址8紧缩存储方式以字节为单位顺序存储字符串的每个字符,根据机器字的长度,紧缩存储方法尽可能将多个字任存放在一个字中0data1str2uctu3res‘ ’存储地址非紧缩存储方式和紧缩存储方式的分析和比较:9顺序串的类型定义#defineSTRMAX64//字符串的最大长度structnode{chardata[STRMAX];//字符数组intslen;//整数slen用来指示字符串的实际长度}10串的链接存储结构采用链接存储结构的串称为链串将链表中每个结点数据域存储的字符个数称为结点的大小。11对于结点大小为1的链串定义如下structstrnode{c
6、hardata;strnode*next;}12对于结点大小为4的链串定义如下#defineNODESIZE4structstrnode{chardata[NODESIZE];strnode*next;}13系统定义的字符串处理函数Strcat(连接),strcpy(复制),strcmp(比较),strlen(求长度),strlwr(转换为小写),Strupr(转换为大写)注意:使用之前,先将头文件string.h包含到源程序中14作业用语言编写一个程序,,测试一个顺序存储的字符串s的串值是否为回文,即从左面读与从右面读内容一样,例:“上海自来水来自海上”15串的抽象数
7、据类型classStr{public:virtualintleng()=0;//求长度virtualintpos(char*t,intk=0)=0;//定位virtualchar*subs(intpos,intlen)=0;//求子串virtualStr&inst(intpos,char*t)=0;//插入virtualStr&dele(intpos,intlen)=0;//删除virtualStr&repl(char*t,char*r)=0;//替换};16串的存储方式串的存储结构顺序存储结构链式存储结构(一般不使用)堆式存储结构顺序存