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

#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;
}

 

posted on 2016-09-26 15:28  会学习的猪  阅读(1170)  评论(0编辑  收藏  举报

导航