串的基本操作

本文介绍了一个C++实现的串类,包括串的生成、长度获取、比较、清空、连接、子串提取、模式匹配等功能。其中,模式匹配采用了KMP算法,还提供了替换、插入、删除等高级操作。
摘要由CSDN通过智能技术生成
#include<iostream>
using namespace std;
#define ok 1
#define error 0
typedef int Status;

//------------------串的堆分配存储表示-------------------
typedef struct{
	char *ch;//若是非空串,则按串长分配存储区,否则ch为NULL
	int length;//串长度
}HString;

//------------------基本操作的函数原型说明---------------
class StringOperation
{
public:
	//生成一个其值等于串常量chars的串T
	Status StrAssign(HString &T,char *chars,int length);
	//返回S的元素个数,称为串的长度
	int StrLength(HString S);
	//若S>T,则返回值>0;若S=T,则返回值=0;若S<T,则返回值<0
	int StrCompare(HString S,HString T);
	//将S清为空串,并释放S所占空间
	Status ClearString(HString &S);
	//用T返回由S1和S2连接而成的新串
	Status Concat(HString &T,HString S1,HString S2);
	//1<=pos<=StrLength(S)且0<=len<=StrLength(S)-pos+1
	//返回串S的第pos个字符起长度为len 
	Status SubString(HString &Sub,HString S,int pos,int len);
	//若主串S中存在和串T值相同的子串,则返回它在主串中S中第pos个字符之后第一次出现的位置,否则函数值为0
	int Index(HString S,HString T,int pos);
	//采用KMP算法进行模式匹配
	int Index_KMP(HString S,HString T,int pos);
	//若串S,T,V存在,且串T是非空串,用V替换主串S中出现的所有与T相等的不重叠的子串
	Status Replace(HString &S,HString T,HString V);
	//若串S存在,则输出串S总的字符
	Status StrOutput(HString S);
	//若串S为空串则返回true,否则返回false
	Status StrEmpty(HString S);
	//在串S的第pos个字符之前插入串T
	Status StrInsert(HString &S,int pos,HString T);
	//串S存在,由串S复制得到串T
	Status StrCopy(HString &T,HString S);
	//从串S中删除第pos个字符起长度为len的子串
	Status StrDelete(HString &S,int pos,int len);
	//销毁串S
	Status StrDestroy(HString &S);
};//StringOperation

Status StringOperation::StrAssign(HString 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值