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

📄 func4-1.cpp

📁 数据结构相关代码
💻 CPP
字号:
 // func4-1.cpp 与存储结构无关的两个基本操作
 int Index(String S,String T,int pos) // 算法4.1
 { // T为非空串。若主串S中第pos个字符之后存在与T相等的子串,
   // 则返回第一个这样的子串在S中的位置;否则返回0
   int n,m,i;
   String sub;
   InitString(sub); // 新增
   if(pos>0)
   { n=StrLength(S); // 主串S的长度
     m=StrLength(T); // 模式串T的长度
     i=pos;
     while(i<=n-m+1) // i从串S的pos到倒数第m个
     { SubString(sub,S,i,m); // 子串sub是从主串S的第i个字符起,长度为m的子串
       if(StrCompare(sub,T)!=0) // 子串sub不等于模式串T
         ++i; // 继续向后比较
       else // 子串sub等于模式串T
         return i; // 返回模式串T的第1个字符在主串S中的位置
     }
   }
   return 0; // 主串S中不存在与模式T相等的子串
 }

 Status Replace(String &S,String T,String V)
 { // 初始条件:串S、T和V存在,串T是非空串
   // 操作结果:用串V替换主串S中出现的所有与串T相等的不重叠的子串
   int i=1; // 从串S的第一个字符起查找串T
   Status k;
   if(StrEmpty(T)) // T是空串
     return ERROR;
   while(i)
   { i=Index(S,T,i); // 结果i为从上一个i之后找到的子串T的位置
     if(i) // 串S中存在串T
     { StrDelete(S,i,StrLength(T)); // 删除串T
       k=StrInsert(S,i,V); // 在原串T的位置插入串V
       if(!k) // 不能完全插入(定长顺序存储结构有可能发生这种情况)
         return ERROR;
       i+=StrLength(V); // 在插入的串V后面继续查找串T
     }
   };
   return OK;
 }

⌨️ 快捷键说明

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