第三章 串结构

串是一种线性表,它特殊在:

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、串操作的实现(略)

原文地址:https://www.cnblogs.com/shamoof/p/3669459.html