当我使用大小为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;
}
答案 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
中包含的数组的末尾。