串的模式匹配(基于修正的KMP的匹配算法)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:24   1140   0
#include<stdio.h>
#include<malloc.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
#define ElemType char

typedef struct
{
 ElemType *start;//顺序字符串的起始位置
 int length;//字符串的长度,即串中的字符个数
}CommonStr;

int nextval[20]={0};//用于存放模式串的next值的数组

int CreateStr(CommonStr &pstr, int n)//生成用于测试的主串
{
 pstr.start=(ElemType *)malloc(100*sizeof(ElemType));
 int i, k=0;
 pstr.length=0;
 srand((unsigned)time(NULL));
 for(i = 0; i < n; i++)
 {
  pstr.start[i] = (char)(rand()%2 + 'a');
  pstr.length++;
 }
 pstr.start[i] = '\0';
 return 1;
}

int GetNextval(CommonStr str)
{//求模式串的next函数值并存入数组next中
 int j = 0, k = -1; nextval[0] = -1;
 while(j < str.length)
 {
  if(k == -1 || str.start[k] == str.start[j])
  {
   ++k; ++j;
   if(str.start[j] != str.start[k])
    nextval[j]=k;
   else
    nextval[j]=nextval
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP