数据结构学习(六)、串的基本操作

#define ERROR 0
#define OK 1
#define FALSE 0
#define TRUE 1
#define MAXSIZE 20

typedef int Status;
typedef char String[MAXSIZE+1];

串的生成

 

/*
    生成一个其值等于chars的串T
*/
Status StrAssign(String T,char * chars)
{
    int i;
    if(strlen(chars)>MAXSIZE)
        return ERROR;
    else{
        T[0] = strlen(chars);
        for(i=1;i<=T[0];i++)
            T[i] = *(chars+i-1);
        return OK;
    }
}

 

串的比较

/*
    串的比较 S>T返回的值大于零 S=T返回零 S<T返回的值小于零
*/
int StrCompare(String S,String T)
{
    int i;
    for(i=1;i<=T[i]&&i<S[i];i++){
        if(T[i]!=S[i])
            return S[i]-T[i];
    }
    return S[0]-T[0];
}

串的拼接

 

/*
    串的拼接, 当MAXSIZE大于等于二拼接串长度时候,返回true否则返回false
*/
Status Contact(String S,String T,String Q)
{
    int i;
    if(S[0]+T[0]<=MAXSIZE){
        Q[0] = S[0]+T[0];
        for(i=1;i<=S[0];i++)
            Q[i] = S[i];
        for(i=1;i<=T[0];i++)
            Q[i+S[0]] = T[i];
        return TRUE;
    }else{
        Q[0] = MAXSIZE;
        for(i=1;i<=S[0];i++)
            Q[i] = S[i];
        for(i=1;i<=MAXSIZE-S[0];i++)
            Q[i+S[0]] = T[i];
        return FALSE;
    }
}

 

串的截取

 

/*
    串的截取,从pos位置开始,长度为len
*/
Status SubString(String S,String Sub,int pos,int len)
{
    int i;
    if(pos<1 || len <0 || pos>S[0] || len>S[0]-pos+1)
        return ERROR;
    for(i=1;i<=len;i++)
        Sub[i]=S[pos+i-1];
    Sub[0] = len;
    return OK;
}

 

转载于:https://www.cnblogs.com/huixuexidezhu/p/5909363.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值