数据结构笔记 —— 串

概念

  • 零个或者多个任意字符组成的有限序列

  • 串中任意个连续字符组成的子序列(含空串)称为该串的子串

  • 字符在序列中的序号为字符在串中的位置

  • 子串位置:子串的第一个字符在主串的位置

  • 空格串:由一个或者多个空格组成的串,与空串不同

  • 串相等:长度相同,对应位置的字符相同

顺序串

typedef struct{
    char ch[MAXLEN-1]; //存储串的一维数组
    int length;
}SString; //顺序存储字符串

链串

typedef struct Chunk{
    char ch[CHUNKSIZE];
    struct Chunk *next;
}Chunk;

typedef struct{
    Chunk *head;
    Chunk *tail;
    int curlen;
}LString;

基本操作

字符串匹配

int Index_BF(SString S,SString T){
    int i=1;
    int j=1;
    while(i<=S.length&&j<=T.length){
        if(S.ch[i]==T.ch[j]){
            i++;
            j++;
        }else{ //被查找串与模式串指针游标回溯
            i=i-j+2;
            j=1;
        }
    }
    if(j>=T.length){
        return i-T.length; //返回匹配成功后的匹配的第一个字符的下标
    }else{
        return 0;
    }
}

Comment