⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4.12.c

📁 部分高校使用anyview编程测试数据结构习题,此代码为数据结构题集(c语言版)严蔚敏版的课后习题答案.专门提供给在anyview上运行,全部为通告代码
💻 C
字号:
4.12③  编写一个实现串的置换操作Replace(&S,T,V)的算法。

要求实现以下函数:
void Replace(StringType &S, StringType T, StringType V);
/* 以串 v 置换串 s 中出现的所有和串 t 相同的非空串  */

StringType是串的一个抽象数据类型,它包含以下6种基本操作:
void InitStr(StringType &s);
  // 初始化s为空串。
void StrAssign(StringType &t, StringType s);
  // 将s的值赋给t。s的实际参数是串变量。
int StrCompare(StringType s, StringType t);
  // 比较s和t。若s>t,返回值>0;若s=t,返回值=0;若s<t,返回值<0。
int StrLength(StringType s);
  // 返回s中的元素个数,即该串的长度。
StringType Concat(StringType &s, StringType t); 
  // 返回由s和t联接而成的新串。
StringType SubString(StringType s, int start, int len);
  // 当1<=start<=StrLength(s)且0<=len<=StrLength(s)- start+1时,
  // 返回s中第start个字符起长度为len的子串,否则返回空串。

// 注意,不要使用 " s = " 的形式为 StringType 类型的变量赋值 ,
// 而要使用 StrAssign 函数!!!
void Replace(StringType &S, StringType T, StringType V)
/* 以串 v 置换串 s 中出现的所有和串 t 相同的非空串  */
{   
    int i;
    StringType head,tail,unit;
    for(i=1;i<=StrLength(S)-StrLength(T)+1;i++)
      {
      if(!StrCompare(SubString(S,i,StrLength(T)),T))      //找到了与T匹配的子串
        {
        StrAssign(head,SubString(S,1,i-1));
        StrAssign(tail,SubString(S,i+StrLength(T),StrLength(S)-i-StrLength(T)+1));
        StrAssign(unit,Concat(head,V));
        StrAssign(S,Concat(unit,tail));                      //把head,V,tail连接为新串
        i=i-1+StrLength(V);                                  //当前指针跳到插入串以后
        }
      }    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -