林皇加德 2021-05-15 19:44 采纳率: 0%
浏览 38

求大佬解答下java实验题

请问一下关于java版本的实验题 1.实现串定长顺序存储表示的Replace(&S,T,V), StrInsert(&S,pos,T)的操作 2.请问一下关于实现串堆分配存储表示的Replace(&S,T,V), StrInsert(&S,pos,len)

  • 写回答

2条回答 默认 最新

  • 关注

    定长顺序串SString的类型

    typedef unsigned char SString[MAXSTRLEN+1];  
    /* s[0] is the string's length */

    实现函数如下:

    Status Replace(SString& s, SString t, SString v)
    /* 用串v替换串s中所有和串t匹配的子串。  */
    /* 若有与t匹配的子串被替换,则返回TRUE;*/
    /* 否则返回FALSE                        */
    {
        int i,j,k,b,p,pos,flag;
        i = 1;
        flag = 0;
        k = t[0] - v[0];        //串t与串v的长度差
        while(i <= s[0]-t[0]+1){
            j = 1;
            pos = i;         //记录当前模式串的位置
            while(j <= t[0]){
                if(s[pos] == t[j]){//模式串匹配
                    ++j;
                    ++pos;
                }
                else
                    break;
            }
            if(j > t[0]){    //模式串匹配成功,进行替换操作 
                if(k == 0){   //串t与串v的长度相等
                    for(j = 1,p = i;j <= v[0];++p,++j){
                        s[p] = v[j];                  
                    }
                }
                if(k > 0){//串t的长度大于串v的长度
                    for(j = 1,p = i;j <= v[0];++p,++j){
                        s[p] = v[j];                  
                    }
                    for(p = pos;p <= s[0];++p){//被替换子串后的元素往前移
                        s[p-k]=s[p];
                    }
                    s[0] = s[0] - k;//当前主串长度改变
                }
                if(k < 0){//串t的长度小于串v的长度
                    for(p = s[0]; p >= i;--p){ //被替换子串后的元素往后移
                        s[p-k] =s[p];
                    }
                    for(j = 1,p = i;j <= v[0];++p,++j){
                        s[p] = v[j];                   
                    }
                    s[0] = s[0] - k;//当前主串长度改变
                }            
                flag = 1;      //匹配成功,标记为1               
            }
            else 
                ++i;          //模式串匹配不成功,模式串向后移
        }
        if(flag)
            return TRUE;
        else
            return FALSE;    
    }
    评论

报告相同问题?

悬赏问题

  • ¥15 r语言xlsx包下载后使用时出现了下列问题该如何解决
  • ¥15 Arcgis河网分级报错
  • ¥200 java+appium2.1+idea
  • ¥20 请帮我做一个EXE的去重TXT文本
  • ¥15 工价表引用工艺路线,应如何制作py和xml文件
  • ¥15 根据历史数据,推荐问题类型
  • ¥15 需要仿真图,简单的二阶系统实例
  • ¥15 stm32光控照明仿真
  • ¥15 使用人工智能的方法生成满足一定统计参数要求的随机数序列
  • ¥15 SENT协议中相关问题咨询