zoukankan      html  css  js  c++  java
  • YTU 3008: 链串的基本运算

    3008: 链串的基本运算

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 1  解决: 1

    题目描述

    编写一个程序,实现链串的各种基本运算,主函数已给出,请补充每一种方法。

     

    1、建立串s="abcdefghefghijklmn",和串s1="xyz";

    2、输出串s;

    3、输出串s的长度;

    4、在串s的第九个字符位置插入串s1而产生s2;

    5、输出串s2;

    6、删除串s的第二个字符开始的五个字符而产生串s2;

    7、输出串s2;

    8、将串s第二个字符开始的五个字符替换成串s1而产生串s2;

    9、输出串s2;

    10、提取串s的第二个字符开始的10个字符而产生s2;

    11、输出串s3;

    12、将串s1和串s2连接起来而产生串s3;

    13、输出串s3;

     

    链串的定义为

    typedef struct Node
    {
        char data;
        struct Node *next;
    } LiString;
     
    主函数:
    int main()
    {
        LiString *s,*s1,*s2,*s3;
        char c[]="abcdefghefghijklmn",d[]="xyz";
        StrAssign(s,c);                             //建立串
        StrAssign(s1,d);
        DispStr(s);                                 //输出串
        StrLength(s);
        s2=InsStr(s,9,s1);                          //将s1插入到s的第九个位置
        DispStr(s2);
        s2=DelStr(s,2,5);                           //删除s第二个字符开始的五个字符
        DispStr(s2);
        s2=RepStr(s,2,5,s1);                        //将串s第二个字符开始的五个字符替换成串s1
        DispStr(s2);
        s2=TiStr(s,2,10);                           //提取串s的第二个字符开始的10个字符
        DispStr(s2);
        s3=Concat(s1,s2);                           //将串s1和串s2连接起来
        DispStr(s3);
        return 0;
    }

    输入

    输出

    样例输出

    abcdefghefghijklmn
    18
    abcdefghxyzefghijklmn
    aghefghijklmn
    axyzghefghijklmn
    bcdefghefg
    xyzbcdefghefg

    提示

    请使用C++编译并提交


    迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方…
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    typedef struct Node
    {
        char data;
        struct Node *next;
    } LiString;
    void StrAssign(LiString *&s,char cstr[])
    {
        int i;
        LiString *r,*p;
        s=(LiString *)malloc(sizeof(LiString));
        r=s;
        for(i=0; i<(int)strlen(cstr); i++)
        {
            p=(LiString*)malloc(sizeof(LiString));
            p->data=cstr[i];
            r->next=p;
            r=p;
        }
        r->next=NULL;
    }
    void DispStr(LiString *s)
    {
        LiString *p=s->next;
        while(p!=NULL)
        {
            printf("%c",p->data);
            p=p->next;
        }
        printf("
    ");
    }
    void StrLength(LiString *s)
    {
        int i=0;
        LiString *p=s->next;
        while(p!=NULL)
        {
            i++;
            p=p->next;
        }
        printf("%d
    ",i);
    }
    LiString *InsStr(LiString *s,int i,LiString *t)
    {
        int k;
        LiString *str,*p=s->next,*p1=t->next,*q,*r;
        str=(LiString*)malloc(sizeof(LiString));
        str->next=NULL;
        r=str;
        for(k=1; k<i; k++)
        {
            q=(LiString*)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;
            r=q;
            p=p->next;
        }
        while(p1!=NULL)
        {
            q=(LiString*)malloc(sizeof(LiString));
            q->data=p1->data;
            r->next=q;
            r=q;
            p1=p1->next;
        }
        while(p!=NULL)
        {
            q=(LiString*)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;
            r=q;
            p=p->next;
        }
        r->next=NULL;
        return str;
    
    }
    LiString *DelStr(LiString *s,int i,int j)
    {
        int k;
        LiString *str,*p=s->next,*q,*r;
        str=(LiString*)malloc(sizeof(LiString));
        str->next=NULL;
        r=str;
        for(k=0; k<i-1; k++)
        {
            q=(LiString*)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;
            r=q;
            p=p->next;
        }
        for(k=0; k<j; k++)p=p->next;
        while(p!=NULL)
        {
            q=(LiString*)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;
            r=q;
            p=p->next;
        }
        r->next=NULL;
        return str;
    }
    LiString *RepStr(LiString *s,int i,int j,LiString *t)
    {
        int k;
        LiString *str,*p=s->next,*p1=t->next,*q,*r;
        str=(LiString*)malloc(sizeof(LiString));
        str->next=NULL;
        r=str;
        for(k=0; k<i-1; k++)
        {
            q=(LiString*)malloc(sizeof(LiString));
            q->data=p->data;
            q->next=NULL;
            r->next=q;
            r=q;
            p=p->next;
        }
        for(k=0; k<j; k++)p=p->next;
        while(p1!=NULL)
        {
            q=(LiString*)malloc(sizeof(LiString));
            q->data=p1->data;
            q->next=NULL;
            r->next=q;
            r=q;
            p1=p1->next;
        }
        while(p!=NULL)
        {
            q=(LiString*)malloc(sizeof(LiString));
            q->data=p->data;
            q->next=NULL;
            r->next=q;
            r=q;
            p=p->next;
        }
        r->next=NULL;
        return str;
    }
    LiString *TiStr(LiString *s,int i,int j)
    {
        LiString *str;
        int k=0,m=0;
        char c[50]= {0};
        while(s!=NULL)
        {
            k++;
            if(k<=i+j&&k>i)c[m++]=s->data;
            s=s->next;
        }
        StrAssign(str,c);
        return str;
    }
    LiString *Concat(LiString *s,LiString *t)
    {
        LiString *str,*p=s->next,*q,*r;
        str=(LiString*)malloc(sizeof(LiString));
        r=str;
        while(p!=NULL)
        {
            q=(LiString*)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;
            r=q;
            p=p->next;
        }
        p=t->next;
        while(p!=NULL)
        {
            q=(LiString*)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;
            r=q;
            p=p->next;
        }
        r->next=NULL;
        return str;
    }
    int main()
    {
        LiString *s,*s1,*s2,*s3;
        char c[]="abcdefghefghijklmn",d[]="xyz";
        StrAssign(s,c);                             //建立串
        StrAssign(s1,d);
        DispStr(s);                                 //输出串
        StrLength(s);
        s2=InsStr(s,9,s1);                          //将s1插入到s的第九个位置
        DispStr(s2);
        s2=DelStr(s,2,5);                           //删除s第二个字符开始的五个字符
        DispStr(s2);
        s2=RepStr(s,2,5,s1);                        //将串s第二个字符开始的五个字符替换成串s1
        DispStr(s2);
        s2=TiStr(s,2,10);                           //提取串s的第二个字符开始的10个字符
        DispStr(s2);
        s3=Concat(s1,s2);                           //将串s1和串s2连接起来
        DispStr(s3);
        return 0;
    }
    

  • 相关阅读:
    平衡的括号(栈)
    二叉树遍历
    Ohana Cleans Up0101
    Missing number
    Django框架之模板层
    Django框架之路由层、视图层
    Django框架
    Django初识
    前端之bootstrap
    前端之BOM、DOM
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989380.html
Copyright © 2011-2022 走看看