• 数据结构实验9——串


    #include <stdio.h>
    #include <stdlib.h>
    #define Num 255
    typedef struct String
    {
        char ch[Num];
        int len;
    }String;
    void StrAssign(String *T,char *s)
    {
        int i=0;
        while(s[i]!='')
        {
            T->ch[i]=s[i];
            i++;
        }
        T->ch[i]='';
        T->len=i;
    }
    int StrLength(String T)
    {
        int i=0;
        while(T.ch[i]!='') i++;
        T.len=i;
        return i;
    }
    void StrCopy(String *T,String *S)
    {
        int i=0;
        while(S->ch[i]!='') {T->ch[i]=S->ch[i];i++;}
        T->ch[i]='';
        T->len=i;
    }
    void ClearString(String *T)
    {
        int i=0;
        T->len=0;
        while(T->ch[i]!='') T->ch[i++]='';
    }
    void Concat(String *T,String *S,String *M)
    {
        int i,j;
        for(i=0;i<S->len;i++) T->ch[i]=S->ch[i];
        for(j=0;j<=M->len;j++) T->ch[i+j]=M->ch[j];
    }
    int SubString(String *sub,String *S,int pos,int len)
    {
        if((pos<1||pos>S->len)&&(len<0||len+pos-1>S->len))
            return -1;
        int i;
        for(i=0;i<len;i++)
            sub->ch[i]=S->ch[pos+i-1];
        sub->ch[i]='';
        return 1;
    }
    int Index(String *S,String *T,int pos)
    {
        int i=pos-1,j=0;
        while(i<S->len&&j<T->len)
        {
            if(S->ch[i]==T->ch[j]){ i++;j++; }
            else { i=i-j+1;j=0; }
        }
        if(j>=T->len) return i-j;
        return -1;
    }
    int main()
    {
        String T,M,S,N;
        char *p="wqhsucclipingwangzijian";
        char *q="lipingwang";
        printf("串的基本操作:
    ");
        StrAssign(&T,p);
        printf("1 串的常量复制 T=%s
    ",T.ch);
        StrCopy(&M,&T);
        printf("2 串的复制 M=%s
    ",M.ch);
        StrAssign(&S,q);
        printf("3 串的常量复制 S=%s
    ",S.ch);
        printf("4 串的匹配 Index(M,S,3)=%d
    ",Index(&M,&S,3));
        Concat(&M,&T,&S);
        printf("5 串T的长度=%d
    ",StrLength(T));
        SubString(&N,&M,5,6);
        printf("6 串的链接SubString(N,M,5,6)=%s
    ",N.ch);
        ClearString(&M);
        ClearString(&T);
        ClearString(&N);
        printf("7 串已置空!
    ");
        printf("8 串的操作结束!
    ");
        return 0;
    }
    

  • 相关阅读:
    202104-2 邻域均值
    202104-1 灰度直方图
    1384. 饲料调配
    1381. 阶乘
    264. 丑数 II
    1380. 邮票
    42 新安装的idea必备设置
    41 cmd中解除被占用的端口
    40 文件在线预览
    39 进度条使用
  • 原文地址:https://www.cnblogs.com/abc-24990/p/4257472.html
Copyright © 2020-2023  润新知