数据结构 - C++删除表中相同元素,循环问题在哪?
ringa_lee
ringa_lee 2017-04-17 15:33:52
0
2
693
template <class T>
bool SeqList<T>::Delsame(T x)
{
    int i,j;
    for(int j=1;j<n+1;j++)
    {
        if (elements[j-1]==x)
        {
            for (int i=j-1;i<n;i++)
                {
                    elements[i]=elements[i+1];
                }
             n--;
        }
    }
    return true;
}

删除表中相同元素部分的代码,当表中所需删除元素只有1个的时候,运行正常.当所需删除元素有多个的时候,运行结果正确,但是会提示.exe已停止工作,所以想知道循环问题在哪??

ringa_lee
ringa_lee

ringa_lee

모든 응답(2)
左手右手慢动作

n은 시퀀스 테이블의 요소 수를 나타냅니까? 그렇다면 elements[i 1] 문장은 elements[n]으로 간주되어 범위를 벗어납니다.
그런데 첫 번째 루프에서 j 가 사용되는 이유는 무엇입니까? 한 요소를 삭제하면 다음 요소가 앞으로 이동하여 j 를 실행하면 한 요소를 건너뛰는 것 아닌가요?
두 개의 인접한 동일한 요소를 삭제할 수 있는지 확인해 보세요.

伊谢尔伦

위에서 오류가 지적되었습니다. 올바른 구현을 하도록 노력하겠습니다

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿