关于算法-数据结构:串朴素模式匹配算法实现

include<stdio.h>

include<stdlib.h>

include<stdbool.h>

define MAXSTRLEN 255

// 存储构造
typedef unsigned char SString[MAXSTRLEN + 1];

// 奢侈匹配模式
int Index(SString S, SString T, int pos){

int i = pos;
int 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 0;

}

bool StrAssign(SString str, char *src){

char * c = src;
for(int i=0; *c!='\0'; ++i, ++c){
    if(0==i){
        str[0] = 0;
    }else{
        str[0] = 0;
        for(int j=1; j<=i; j++){
            str[j] = src[j-1];
            str[0] +=1;
        }
    }
}

}

void main(){

SString S;
SString T;
char a[] = "abbacdefg";
char b[] = "acd";
// 给串调配元素顺便就义掉第一个地位来记录串的理论长度
StrAssign(S, a);
StrAssign(T, b);
int pos = Index(S, T, 3);
if (pos != 0)
    printf("模式匹配胜利,找到地位为%d\n", pos);
else
    printf("模式匹配失败");
return 0;

}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理