基于串的模式匹配

基于串的模式匹配

一、代码要求

  1. 实现串的StrAssign、StrCompare、ClearString等基本操作;

  2. 使用KMP算法实现模式匹配。

1)使用堆分配的方式申请串内存空间;
2)表达式通过命令行参数读取,并判断命令行参数的数量是否正确。

二、理论知识

1.串的基本知识

(string)是由若干字符组成的有限序列。

2.串的表示和实现

  1. 定长顺序存储表示
  2. 堆分配存储表示

3.串的模式匹配算法

待更新

4.代码思路

待更新

三、具体代码

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>

#define OK 1
#define OVERFLOW -2
#define ERROR 0
#define START 1
typedef int Status;

//题目要求:
//输入:通过命令行参数输入原字符串和模式字符串。
//输出:(1)命令行参数不正确输出字符串ERROR_01;
//(2)如果查找到模式串,输出关键字在字符串中的位置(计数从1开始);
//(3)如果未找到模式串则输出-1 。
//基本要求:
// 1、实现串的StrAssign、StrCompare、ClearString等基本操作;
// 2、使用KMP算法实现模式匹配。
//注:1)使用堆分配的方式申请串内存空间;
// 2)表达式通过命令行参数读取,并判断命令行参数的数量是否正确

//※串的堆分配存储表示
typedef struct
{
   
    char *ch;
    int length; //串长度
} HString;

//※基本操作的函数声明

//字符串的复制操作,把str2复制到str1上,str2开始位置为startpos2,str1开始位置为startpos1。
Status StrCopy(char *Str1, char *Str2, int count, int StartPos1, int StartPos2);

//生成一个值等于字符串串常量chars的串
Status StrAssign(HString &MyStr, char *chars);

//求MyStr的字符串的长度
int StrLength(HString MyStr);

//比较两个字符串的大小,并返回比较结果
int StrCompare(HString MyStr1, HString MyStr2);

//将MyStr清为空串,并释放其空间
Status ClearString(HString &MyStr);

//用MyStr返回Str1和Str2衔接而成的新串
Status Concat(HString &MyStr, HString &Str1, HString &Str2);

//用sub返回串MyStr第pos起长度为len的串
Status SubString(HString &Sub, HString MyStr, int pos, int len);

//得到模式串MyStr的next数组
Status get_next(HString &MyStr, int *next);

//主串为MStr,模式串为PatStr,进行匹配,返回开始重合的主串的位置
int Index_KMP(HString MStr, HString PatStr, int *next, int pos, int &error);

//※基本操作的函数定义
Status StrCopy(char *Str1, char *Str2, int count, int StartPos1, int StartPos2)
{
   
    int i = 0
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值