数据结构实验(C语言):堆串

文章参考过网上的内容,如有侵权,请联系

#include
#include

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

int StrAssign(HString &T,char *chars)
{  //生成一个其值等于串常量chars的串T
    if(T.ch) free(T.ch);  //释放T原有空间
    int i=0;char *c=chars;
    while(*c)  //求chars的长度i

    {
        ++i;++c;
    }
    if(!i){T.ch=NULL; T.length=0;}
    else
    {
        if(!(T.ch=(char*)malloc(i*sizeof(char))))
            exit(-1);
        for(int k=0;k<i;k++) T.ch[k]=chars[k];  //复制
        T.length=i;
    }
    return 1;

}

void disp(HString S)
{
    int i=0;
    while(S.length--)
    {
       printf("%c",S.ch[i]);
       i++;
    }
    printf("\n");
}

void DelStr(HString &S,int start,int len)
{

    if(S.length==0||start>S.length||start+len>S.length+1) printf("ERROR\n");

    for(int i=start;i<=S.length-len+1;i++)
    {
        S.ch[i-1]=S.ch[i+len-1];
    }
    S.length=S.length-len;
    disp(S);
}

int main()
{
    HString S;
    char *T="abcdefghijk";
    printf("定义串S\n");
    StrAssign(S,T);
    disp(S);
    printf("截取从3号位开始长度为4的字串\n");
    DelStr(S,3,4);

}

你可能感兴趣的:(课程实验)