王道数据结构 简单的模式匹配算法

Posted 1点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了王道数据结构 简单的模式匹配算法相关的知识,希望对你有一定的参考价值。

代码:

#include <stdio.h>  
#include "stdlib.h"
 
//宏定义    
#define TRUE   1    
#define FALSE   0    
#define OK    1    
#define ERROR   0  
 
#define  MAXSTRLEN 100
 
typedef char    SString[MAXSTRLEN + 1];
/************************************************************************/
/* 
 返回子串T在主串S中第pos位置之后的位置,若不存在,返回0
*/
/************************************************************************/
int BFindex(SString S, SString T, int pos)
{
    if (pos <1 ||  pos > S[0] ) exit(ERROR);
    int i = pos, j =1;
    while (i<= S[0] && j <= T[0])
    {
        if (S[i] == T[j])
        {
            ++i; ++j;
        } else {
            i = i- j+ 2;
            j = 1;
        }
    }
    if(j > T[0]) return i - T[0];
    return ERROR;
}
 
 
 
void main(){
    SString S = {13,\'a\',\'b\',\'a\',\'b\',\'c\',\'a\',\'b\',\'c\',\'a\',\'c\',\'b\',\'a\',\'b\'};
    SString T = {5,\'a\',\'b\',\'c\',\'a\',\'c\'};
    int pos;
    pos = BFindex( S,  T, 1);
    printf("%d", pos);
}

输出:  6 

 

 

 

 

 

以上是关于王道数据结构 简单的模式匹配算法的主要内容,如果未能解决你的问题,请参考以下文章

详解 Scala 模式匹配

王道数据结构与算法串

王道数据结构与算法栈的应用

数据结构-串的模式匹配

串的模式匹配算法

王道数据结构7(排序)