亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問用C語言實現數據結構中Index(S,T,pos)的算法?

請問用C語言實現數據結構中Index(S,T,pos)的算法?

用C語言實現數據結構中Index(S,T,pos)的算法
查看完整描述

4 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

這是模板。 template<class T >
class arrList : public List<T>

這個的意思是, arrList這個類,繼承 List<T> 這個類。

至于 public List <T> 這個類,應該是之前有定義的類。 它也是一個模板類。

查看完整回答
反對 回復 2019-07-13
?
米脂

TA貢獻1836條經驗 獲得超3個贊

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串后面的子串并存入sub
for(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;
}
}
}

查看完整回答
反對 回復 2019-07-13
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

第一次比較完后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;
我也是看到別人的,但是我覺的這個更合理。

查看完整回答
反對 回復 2019-07-13
  • 4 回答
  • 0 關注
  • 1549 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號