字符串

/*串的顺序存储结构*/
class seqstring{
public:
seqstring();
seqstring(char*);
seqstring(seqstring &t);
int strlength();
int strcom(seqstring t);
void strcon(seqstring s,seqstring t);
int index(seqstring s);
void substr(seqstring s,int star,int len);
void printstr(){cout<<str<<endl;}
private:
int maxsize;
char *str;
};
seqstring::seqstring()
{
maxsize=256;
str=new char[maxsize];
for(int i=0;i<maxsize;i++)
str[i]='\0';
}
seqstring::seqstring(seqstring &t)
{
int len=t.strlength();
str=new char[len];
for(int i=0;i<len;i++)
str[i]=t.str[i];
str[i]='\0';
}
seqstring::seqstring(char*t)
{
maxsize=strlen(t)+1;
str=new char[maxsize];
for(int i=0;t[i]!='\0';i++)
str[i]=t[i];
str[i]='\0';
}
int seqstring::strlength()
{
int i=0;
while(str[i]!='\0')
i++;
return i;
}
int seqstring::strcom(seqstring t)
{
char *s,*t1;
s=str;
t1=t.str;
while(*s==*t1&&*s!='\0'){
s++;
t1++;
}
return *s-*t1;
}
/*朴素串匹配算法来确定子串在主串中首次出现的位置,i是主串中每次比较开始的位置*/
int seqstring::index(seqstring s)
{
int i,j,k;
int m=s.strlength();
int n=strlength();
for(i=0;i<=n-m;i++)
{
j=0;k=0;
while(j<m&&str[k]==s.str[j]){
k++;j++;}
if(j==m)
return i;
}
return -1;
}
/*取子串运算*/
void seqstring::substr(seqstring s,int star,int len)
{
int length=s.strlength();
if(star>0&&star<=length-1&&len>0&&len<=length-1-star)
{
for(int i=0;i<len;i++)
str[i]=s.str[star+1];
str[i]='\0';
}
else
cout<<"parameter error"<<endl;

}

字符串也可以进行链式存储,但它会浪费空间,而且对字符的插入、删除也不方便。不作介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值