第四章 串的模式匹配

串的存储结构

串的顺序存储

//短串的顺序存储结构
#define MAXLEN 24
typedef struct{
   char base[MAXLEN];//栈数组
         //0号元素存串长
         //除结束符外最多22字符
}SString;                                             

 

//长串的顺序存储结构
typedef struct{
   char *base; //堆数组
   int capacity; //堆容量
   int  size;  //串长度
}HString;

 串的链式存储

#define CHUNKSIZE 80
typedef struct Chunk{
   char  ch[CHUNKSIZE];
   struct Chunk *next;
}Chunk;                                   
typedef struct{
   Chunk  *head,*tail;  
   int curlen; //串长
}LString;

模式匹配算法

模式匹配的BF算法(Brute-Force 蛮力算法)

 

int StringMatch_BF( String T, String W ){
    int i = 1,  j = 1;
    while ( i <= T.size && j <= W.size){
        if ( T.base[i] == W.base[j] ){   ++i; ++j; }
        else if( j==1 ) i++;        
        else{
            i  = i - j + 2  ;  j = 1;
        }
    }
    if ( j > W.size )   return i-W.size;
    else    return 0;
}

KMP算法(重要)

 

 

 

总结与推广

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值