错误的输出C ++ ArrayList

时间:2011-04-30 19:42:15

标签: c++ arraylist

当我使用大小为5的ArrayList时,它给出了错误的结果,但是当它变得大于5时它变得正确!

#include <iostream>
#include <string>

using namespace std;

class list
{
    typedef int ListElemtype;
private:
    ListElemtype listArray[6];
public:
    bool insert(ListElemtype e)
    {
        if (numberOfElements == 5) //It turns wrong result when ListArray equal 5??
        {
            cout << "Can't do the insertion" << endl;
            return false;
        } //Why it return false? I know why i but = instead of == :D
        else
        {
            listArray[numberOfElements + 1] = e;
            numberOfElements++;
            cout << "Done perfectly!" << numberOfElements << endl;
            return true;
        }
    };

    bool first(ListElemtype &e);
    bool next(ListElemtype &e);
    int numberOfElements;
    int CurrentPosition;

    void LIST ()
    {
        CurrentPosition=-1;
        numberOfElements=0;
        return;
    }
};

int main()
{
    list A;
    A.LIST();
    A.insert(10);
    A.insert(20);
    A.insert(30);
    A.insert(40);
    A.insert(50);
    A.insert(60);
    system("pause");
    return 0;
}

3 个答案:

答案 0 :(得分:1)

数组从零开始索引,而不是从一开始索引。因此listArray[numberOfElements+1]=e;应为listArray[numberOfElements]=e;。第一个插入的元素进入listArray[0]

答案 1 :(得分:1)

您的listArray大小为6因此数组索引将从0开始到5.如果您numberOfElements==5 listArray[numberOfElements + 1],那么您试图存储在索引6处,而您没有。

答案 2 :(得分:0)

如您所知,C的数组基于0而不是1。因此,

 else { listArray[numberOfElements+1]=e;
list A等于5或更高时,

写入numberOfElements中包含的数组的末尾。