zoukankan      html  css  js  c++  java
  • 顺序串的初始化,建立,插入,查找,删除。

    --

    //////////////////////////////////////////////
    //顺序串的初始化,建立,插入,查找,删除。  //
    //Author:Wang Yong                          //  
    //Date: 2010.8.21                           //
    //////////////////////////////////////////////
     
    #include <stdio.h>
    #include <stdlib.h>
     
    #define MAX 1024
     
    //////////////////////////////////////////////
     
    //定义顺序串的类型  
     
    typedef struct
    {
        char ch[MAX];           //存放字符串 
        int len;                //存放串的长度 
    } SeqString;
     
    //////////////////////////////////////////////
     
    //创建顺序串
     
    void StrAssign(SeqString &str,char cstr[])
    {
        int i;
        for(i = 0 ;cstr[i] != ''; i++)
            str.ch[i] = cstr[i];
        str.len = i;
    }
     
    //////////////////////////////////////////////
     
    //顺序串的复制
     
    void StrCopy(SeqString &s,SeqString t)
    {
        int i;
        for(i = 0;i < t.len; i++)
            s.ch[i] = t.ch[i];
        s.len = t.len;
    } 
     
    //////////////////////////////////////////////
     
    //求串长的算法
     
    int StrLength(SeqString s)
    {
        return s.len;
    }
     
    ///////////////////////////////////////////////
     
    //串连接的算法
     
    SeqString StrConcat(SeqString s,SeqString t)
    {
        int i;
        SeqString str;
        for(i = 0 ;i < s.len ; i++)
            str.ch[i] = s.ch[i];
        for(i = 0 ; i < t.len;i++)
            str.ch[i+s.len] = t.ch[i];
        str.len =s.len + t.len;
         
        return  str; 
    } 
    ///////////////////////////////////////////////
     
    //求子串的算法,返回从第i个字符开始,连续的j个字符组成的子串
     
    SeqString SubString(SeqString s,int i,int j)
    {
        SeqString str;
        int k;
        if(i < 1 || i > s.len || i+j-1 > s.len)
            printf("参数错误!
    "); 
        for(k = i-1;k < i+j;k++ )
            str.ch[k-i+1] = s.ch[k];
        str.len = j;
        return str;
    } 
     
    ///////////////////////////////////////////////
     
    //串插入的算法
     
    SeqString InsertString(SeqString &s,int i, SeqString t)
    {
        s.len =s.len + t.len;
        int j;
        for(j = s.len - 1; j >- i-1; j--)
            s.ch[j+t.len] = s.ch[j];
        i = i - 1;  
        for(j = 0 ; j < t.len; j++)
            s.ch[i++] = t.ch[j];
        return s; 
    }
     
    ///////////////////////////////////////////////
     
    //删除字串的算法,从s中删除第i个字符开始的长度为j的子串
     
    SeqString DeleteString(SeqString &s,int i, int j)
    {
        int k;
        if(i < 0 || i > s.len || i+j-1 > s.len)
            printf("参数不正确!
    ");
        for(k = i-1 ;k <s.len-j;k++)
            s.ch[k] = s.ch[k+j];
        s.len = s.len - j;
        return s; 
    } 
     
    /////////////////////////////////////////////////// 
     
    // 串的输出
     
    void Output(SeqString s)
    {
        int i;
        for(i = 0 ; i < s.len; i++)
            printf("%c",s.ch[i]);
        printf("
    ");
    } 
    int main()
    {
        char c[100];
        SeqString str;
        printf("请输入要创建的字符串:");
        scanf("%s",c);
        StrAssign(str,c);
        Output(str);
         
        int i = StrLength(str);
        printf("字符串的长度为:%d
    ",i);
         
        printf("要复制的字符串:");
        char tempc[100];
        SeqString tstr;
        scanf("%s",tempc);
        StrAssign(tstr,tempc);
        StrCopy(str,tstr);
        Output(str);
         
        printf("将两个字符串链接起来:");
        StrAssign(str,c);
        StrAssign(tstr,tempc);
         
        SeqString newstr = StrConcat(str,tstr);
        Output(newstr);
         
        SeqString sstr; 
        int j;
        printf("请输入所要求的子串位置i和长度j:");
        scanf("%d %d",&i,&j);
        sstr = SubString(newstr,i,j);
        Output(sstr);
         
        printf("请输入要插入的字符串:");
        scanf("%s",c);
        StrAssign(str,c);
        printf("请输入要插入的位置:");
        scanf("%d",&i);
        InsertString(newstr,i,str); 
        Output(newstr);
         
        printf("请输入要删除子串的位置和长度:");
        scanf("%d %d",&i,&j);
        DeleteString(newstr,i,j);
        Output(newstr); 
        return 0;
    }

    --

    --

  • 相关阅读:
    jsp get参数乱码问题
    oracle 列相减——(Oracle分析函数Lead(),Lag())
    js获取本机id
    java mar --->JSONArray.fromObject
    五级菜单
    15 Spring Boot Shiro 验证码
    13 Spring Boot Shiro使用JS-CSS-IMG
    8:Spring Boot中thymeleaf模板中使用 Shiro标签
    8:Spring Boot Shiro记住密码
    阿里巴巴的阿里云中央仓库
  • 原文地址:https://www.cnblogs.com/Ph-one/p/6889860.html
Copyright © 2011-2022 走看看