数据结构的问题,代码不明白为什么,求解惑
程序代码:SqString* MaxSubstr(SqString s)
{
SqString *sp;
int index=0,length=0,length1,i=0,j,k;
while(i</s.length)
</s.length)
程序代码:SqString* MaxSubstr(SqString s)
{
SqString *sp;
int index=0,length=0,length1,i=0,j,k;
while(i</s.length)
</s.length)
2017-05-08 13:40
程序代码:SqString* MaxSubstr(SqString s)
{
SqString *sp;
int index=0,length=0,length1,i=0,j,k;
while(i<s.length)
{
j=i+1;
while(j<s.length)
{
if(s.data[i]==s.data[j])
{
length1=1;
for(k=1;s.data[i+k]==s.data[j+k];k++)//如果相同就继续朝后面找,这里明白
length1++;
if(length<length1)//这里也明白
{
length=length1;
index=i;
}
j+=length1; //为什么?为什么不是直接break跳出来,然后从i+1继续找? 为什么要从这个重复出继续朝后面呢?
//我感觉这里并没有太大意义,和直接跳出去没有太大区别,是我理解错了吗???????
}
else
j++;//这里也是这样,为什么呢?都已经不和i连在一起了,还怎么看重复呢?
}
i++;
}
sp=(SqString*)malloc(sizeof(LiString));
sp->length=length;
for(i=0;i<length;i++)
sp->data[i]=s.data[i+index];
return sp;
}
2017-05-08 13:41
[此贴子已经被作者于2017-5-8 17:12编辑过]

2017-05-08 17:05

2017-05-08 17:11
程序代码:
while(j<s.length)
{
if(s.data[i]==s.data[j])
{
length1=1;
for(k=1;s.data[i+k]==s.data[j+k];k++)
length1++;
if(length<length1)
{
length=length1;
index=i;
}
j+=length1;
}
else
j++;//为什么还要循环?不是已经不连续了吗?i并没有改变的。
}
i++;
}
sp=(SqString*)malloc(sizeof(LiString));
sp->length=length;
for(i=0;i<length;i++)
sp->data[i]=s.data[i+index];
return sp;
}
2017-05-08 17:21
~~可以自己试试改改~如果改正确了证明你的思路是可行的~~

2017-05-08 17:59