Неверный вывод C ++ ArrayList - PullRequest
0 голосов
/ 30 апреля 2011

Когда я создаю ArrayList с размером 5, он дает неправильный результат, но когда он становится больше 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 ]

1 голос
/ 30 апреля 2011

Ваш listArray размер равен 6, поэтому индекс массива будет начинаться с 0 до 5. Когда у вас numberOfElements==5 с listArray[numberOfElements + 1], вы пытаетесь сохранить индекс 6, которого у вас нет.

1 голос
/ 30 апреля 2011

Массивы индексируются с нуля, а не с одного.Так что listArray[numberOfElements+1]=e; должно быть listArray[numberOfElements]=e;.Первый вставленный элемент входит в listArray[0].

0 голосов
/ 30 апреля 2011

Как вы, возможно, знаете, C основывает свои массивы на 0, а не 1.Таким образом,

 else { listArray[numberOfElements+1]=e;

пишет в конец массива, содержащегося в list A, когда numberOfElements равно 5 или выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...