| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 951 人关注过本帖
标题:数据结构的问题,代码不明白为什么,求解惑
取消只看楼主 加入收藏
姚萌萌
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:40
专家分:55
注 册:2016-12-25
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:2 
数据结构的问题,代码不明白为什么,求解惑
程序代码:
SqString* MaxSubstr(SqString s)
{
    SqString *sp;
    int index=0,length=0,length1,i=0,j,k;
    while(i</s.length)
</s.length)

搜索更多相关主题的帖子: 数据结构 代码 int length while 
2017-05-08 13:40
姚萌萌
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:40
专家分:55
注 册:2016-12-25
收藏
得分:0 
回复 楼主 姚萌萌
程序代码:
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
姚萌萌
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:40
专家分:55
注 册:2016-12-25
收藏
得分:0 
回复 4楼 九转星河
但是实际上你看,那里还有一个i,每次找到一个后都会加一,也就是说,由于i的存在,不管j跳过了多少,还是要把s里面的元素全过一遍。
而且,在j的那个循环里面,i是不变的,那么,当s.data[i]!=s.data[j]的时候,把j加一以后又和s.data[i]比较,就算相等了,也不是连续的串啊,我就是这一点想不明白,你说的那个我可以理解,但是不相等之后j+1了为什么还要和i比,那不都已经不是连续的了吗????
程序代码:
        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
快速回复:数据结构的问题,代码不明白为什么,求解惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022352 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved