数据结构 - C++删除表中相同元素,循环问题在哪?
ringa_lee
ringa_lee 2017-04-17 15:33:52
0
2
668
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++ が使用されるのでしょうか? 1つの要素を削除すると、次の要素が前に移動して j++ が実行されると、要素がスキップされませんか?
隣接する 2 つの同一の要素を削除できるかどうかを試してください。

いいねを押す +0
伊谢尔伦

上の階でエラーが指摘されました。正しい実装を試してみます

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート