数据结构第4章2011.pptVIP

  • 2
  • 0
  • 约8.63千字
  • 约 32页
  • 2018-05-04 发布于四川
  • 举报
第4章 串 4.1 串类型的定义 4.2 串的表示和实现 4.3 串的模式匹配算法. 4.4 串操作应用举例 4.1串类型的定义 串(String)是特殊的线性表,其元素是字符。 串的典型操作:匹配、查找、替换等。 串的定义: 串(或字符串),是由零个或多个字符组成的有限序列。一般记为: s=a1a2...an(n=0) 其中s是串的名,用单引号括起来的字符序列是串的值;串中字符的数目n称为串的长度。零个字符的串称为空串,它的长度为零。 串的另一个特殊性: 串的长度的变化范围有可能很大。 4.1串类型的定义 子串与主串的概念 串中任意个连续的字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。通常子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。 串的举例 例:a=BEI,b=JING, c=BEIJING,d=BEI JING 串长分别为3,4,7,8,且a,b都是c,d的子串。 称两个串是相等的,当且仅当这两个串的值相等。 串的抽象数据类型的定义 ADT String{ 数据对象:D={ai|ai(-CharacterSet,i=1,2,...,n,n=0} 数据关系:R1={ai-1,ai|ai-1,ai(-D,i=2,...,n} 基本操作: StrAssign(T,chars) //生成一个其值等于chars的串T。 StrCopy(T,S) //串S存在则由串S复制得串T StrEmpty(S) //串S存在则若S为空串,返回真否则返回假 StrCompare(S,T) //串S和T存在,若ST,则返回值大于0,若S=T,则返回值=0,若ST,则返回值0 StrLength(S) //串S存在返回S的元素个数称为串的长度. ClearString(S) //串S存在将S清为空串 Concat(T,S1,S2) //串S1和S2存在用T返回由S1和S2联接而成的新串(concatenate) 串的抽象数据类型的定义 SubString(Sub,S,pos,len) //串S存在,1=pos=StrLength(S)且0=len=StrLength(S)-pos+1 Index(S,T,pos) //串S和T存在,T是非空,1=pos=StrLength(S),若主串S中存在和串T值相同的子串,则返回它在主串S中第pos个字符之后第一次出现的位置,否则函数值为0 Replace(S,T,V) //串S,T和V存在,T是非空串,用V替换主串S中出现的所有与T相等的不重叠的子串 StrInsert(S,pos,T) //串S和T存在,1=pos=StrLength(S)+1,在串S的第pos个字符之前插入串T StrDelete(S,pos,len) //串S存在,1=pos=StrLength(S)-len+1从串中删除第pos个字符起长度为len的子串 DestroyString(S) //串S存在,则串S被销毁 }ADT String 4.2串的表示和实现 方法 定长顺序存储表示法 堆分配存储表示法 块链存储表示 4.2.1定长顺序存储表示 方法: 类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列。 描述: #define MAXSTRLEN 255 typedef unsigned char SString[MAXSTRLEN+1] 4.2.1定长顺序存储表示 串的实际长度表示 PASCAL采用的方法: 串长可用独立的单元存储,通常为第一个元素。 缺点:长度范围不易确定。 C语言方法 在串的末尾设结束标记’\0’。 缺点:结束标记不能在串中。 实例:a=’abc’的图示 4.2.1定长顺序存储表示 1、串的联接实现Concat(T,S1,S2) 接可能出现的三种情况: 4.2.1定长顺序存储表示 Status Concat(SString T,SString S1,SString S2){ if(S1[0]+S2[0]=MAXSTRLEN) { //未截断 T[1..S1[0]]=S1[1..S1[0]]; T[S1[0]+1..S1[0]+S2[0]]=S2[1..S2[0]]; T[0]=S1[0]+S2[0]; uncut=TRUE; } else if(S1[0] MAXSTRLEN){ //截断 T[1..S1[0]]=S1[1..S1[0]]; T[S1[0]+1..MAXSTRLEN]=S2[1..MAXSTRLEN-S1[0]]; T[0]=MAXSTRLEN; uncut=FALSE; } else{ T[0..MAXSTRLEN]=S1[0..MAXSTRLEN];//仅取S1 uncut=FALSE; } return uncut; }

文档评论(0)

1亿VIP精品文档

相关文档