一、串的概念
n个字符的有限序列记为:S=‘a1a2……an’(n>=0)
S是串名,用单引号括起来的字符序列式串的值
串中字符个数n称为串的长度
长度为0的串称为空串
如:串S=‘This is a string.’‘This’是一个子串,‘string’也是一个子串
求子串在串中的起始位置称为子串定位或模式匹配
二、基本操作
ASSIGN (S,T) 赋值操作:设S,T为串名,将T的值赋给S
CREATE (S, ss) 赋值操作,如:CREATE(S,‘abc’)则S=‘abc’
EQUAL (S,T) 判等函数,返回真或者假
LENGTH (S) 求长度函数
CONCAT (S,T) 联接函数 如:S= ‘xyz’ T=‘abc’则CONCAT (S,T)=‘xyzabc’
CONCAT (S,T)<> CONCAT (T ,S)
SUBSTR(S,start,len)求子串函数,取从S中第start个字符起,长度为len的字符序列。
1<=start<=length(s)+1
0<= len<=length(s)-start+1
INDEX (S,T) 定位函数,若主串S中存在和T相等的子串,则函数值为S中第一个等于T的子串在主串S中的位置;否则,函数值为0
REPLACE (S,T,V) 置换操作,以串V替换在串S中与T相等的所有子串,如:S=‘BBABBABBA’ T=’AB’ V=’C’ 结果为:S=‘BBCBCBA’
三、串的存储结构
1.顺序存储结构
CONST maxlen=串被确认的最大长度
TYPE strtp=RECORD
ch:PACKED(紧缩型,节省空间)ARRAY[1…maxlen] OF char;
curlen:0……maxlen
END;
2.链式存储结构
CONST chunksize=用户定义的结点大小;
TYPE pointer=↑chunk
chunk=RECORD
Oh:ARRAY [1…chunksize] OF char;
next:pointer
END;
Linkstringtp=RECORD
head,tail:pointer;
length:integer
END;