0

我希望有一双新的眼睛可以帮助我找到我做错了什么。我正在尝试在数组中搜索某个 int,一旦找到它,它将删除它并将剩余的元素移过来以填充“删除”所在的位置。

这将用于像 A.remove(25) 这样的类 obj,其中 obj A 包含一些变量,例如 Num(数组中的元素数)、Cap(数组的总容量)和 Pool[](其中包含所有数字)。

bool Set::remove(int X)
{
        for(unsigned J=0; J<Num; J++)
        {
                if(Pool[J] == X)
                {
                        for(unsigned Z=J; J<Num; Z++)
                        {
                                if(Z == (Num-1))
                                {
                                        Pool[Z] = NULL;
                                }
                                else
                                {
                                        Pool[Z] = Pool[Z+1];
                                }
                        }
                        return true;
                }
        }
        return false;
}
4

1 回答 1

4

在你的内部 for 循环中:

for(unsigned Z=J; J<Num; Z++)

循环条件应该Z<Num代替J<Num

for(unsigned Z=J; Z<Num; Z++)

否则J<Num将继续评估为真,Z并将递增,直到超出范围Pool

于 2012-11-01T15:33:43.777 回答