串是一种线性表,它特殊在:
1)数据元素都是来自字符集!
2)由于数据元素特殊,它的操作有些不同于一般线性表,例如:操作的对象一般是对子串(即一组数据元素)而不是单个数据元素!
1、串(String):简单说,它是有限字符集中的零个或多个字符组成的有限序列。
它的操作对象一般不再是单个数据元素,而是一组数据元素。
2、串的术语:
空串:长度为零的字符串,n=0;
空格串:数据元素都是空格的字符串;
子串:串中连续的任意个字符组成的子序列,称为该串的子串;
主串:包含子串的串;
字符在串中的位置:字符在串中的序号(即第几个数据元素);
子串在串中的位置:子串的第一个字符在主串中的位置;
串相等:两个串的长度相等,且各对应位置处的字符都相等;
3、串的操作:
串置空 SetNULL(s)
串赋值 Assign(s,t) Create(s,ss)
判断串是否相等 Equal(s,t)
串联结 Concat(s,t)
取子串 Substr(s,start,len) Substr(s,start,end)
定位 Index(s,t)
串置换 Repacle(s,t,v)
串插入 Insert(s,pos,t)
串删除 Delete(s,pos,len)
判空串 ISNULL(s)
4 ADT(略)
例1:利用判断串相等,求串长度、求子串操作实现定位操作。
int index(String S, String T, int ps) {//T为非空串,若主串S中第pos个字符之后存在与T相等的子串, //则返回第一个这样的子串在S中的位置 if (pos>0) { n=StrLength(S); m=StrLength(T); i=pos; while(i<n-m+1) { SubString(sub,S,i,m); if(StrCompare(sub,T)!=0) ++i; else return i; } } return 0; }
5、串操作的实现(略)