串----定长顺序串

简介:

1.字符串是由零个或多个字符组成

2.子串:串中任意个连续的字符组成的子序列称为该串的子串

3.主串:包含子串的串称为主串。可见,字串是主串的一部分。

4.串相等:当两个串的长度相等且每个对应位置的字符都相等时。

5.子串在主串的位置:以第一个字符在主串中的位置表示。

如:A=“hello world”,B=“hello” C=“world”

B和C分别是A的子串,B的位置为1,C的位置为7


定长顺序串:

类型定义:

#define max 50
typedef struct{
char ch[max];
int len
}sst;//串结构定义

串插入:

简单说明:

插入的位置将串分为两部分,假设分为了AB;两部分,插入c后变成了AcB

1.插入后串长(LA+Lc+LB)<=max,则将B向后移动Lc个元素位置,在将c插入;

2.插入后串长>max且pos+Lc<=max,将B往后移动后会有部分字符被舍弃;

3.插入后串长>max且pos+Lc>max,则B全部被舍弃,直接从pos开始插入。

SteInsert(sst *s,int pos,sst t){
/*在串s中下表为pos的字符之前插入串t*/
if(pos<0||pos>s->len) return 0;
if(s->len+t.len<=max)
    {
    for(i=s->len+t.len;i>=pos+t.len;i--)
        {
        s->ch[i]=s->ch[i-t.len];
        }
    for(i=0;i<t.len;i++) s->ch[i+pos]=t.ch[i];
    s->len=s->len+t.len;
    }
else if(pos+t.len<=max)
    {
    for(i=max-1;i>=pos+t.len;i--)s->ch[i]=s-ch[i-t.len];
    for(i=0;i<t.len;i++) s->ch[i+pos]=t.ch[i];
    s->len=max;
    }
else{
    for(i=0;i<t.len;i++)s->[i+pos]=t.ch[i];
    s->len;
    }
return 1;
}

顺序串删除:

StrDelte(sst *W,int pos,int len)
{
if(pos<0||pos>s->len-len)return 0;
for(int i=pos+len;i<s->len;i++)
s->ch[i-len]=s->ch[i];//从pos+len开始至串尾依次向前移动,实现删除len个字符。
s->len=s->len-len;//s串长减len
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值