请问用C语言实现数据结构中Index(S,T,pos)的算法?

用C语言实现数据结构中Index(S,T,pos)的算法


holdtom
浏览 536回答 4
4回答

红颜莎娜

这是模板。 template<class T >class arrList : public List<T>这个的意思是, arrList这个类,继承 List<T> 这个类。至于 public List <T> 这个类,应该是之前有定义的类。 它也是一个模板类。

梵蒂冈之花

typedef struct{char data[MaxSize];int len;}SqString;int Index(SqString S,SqString T,int pos){//查找子串int i,j;i=pos-1;j=0;while(i<S.len&&j<T.len)if(S.data[i]==T.data[j]){i++;j++;}else{i=i-j+1;j=0;}if(j>=T.len)return i-j+1;else return 0;}void Replace(SqString &S,SqString T,SqString R){int i,j,pos=1;SqString sub;while(pos<=S.len-T.len){i=Index(S,T,pos);if(i){sub.len=S.len-i-T.len+1;//截取S中替换T串后面的子串并存入subfor(j=0;j<sub.len;j++)sub.data[j]=S.data[i+T.len-1+j];//替换字符串for(j=0;j<R.len;j++)S.data[i+j-1]=R.data[j];//将sub子串链接到后面for(j=0;j<sub.len;j++)S.data[i+R.len+j-1]=sub.data[j];S.len=i+R.len+sub.len-1;pos=i+R.len;}}}

潇潇雨雨

第一次比较完后i = pos+1第二次比较完后i = pos+2……if (S[i] == T[j]) { ++i; ++j;} //假设相同字符长n,i=pos+n,j=1+n;else{ i = i-j+2; j =1;} //不相同时 i = i-j+2 = (pos+n)-(1+n)+2 = pos+1;我也是看到别人的,但是我觉的这个更合理。
打开App,查看更多内容
随时随地看视频慕课网APP