一切正常,直到索引19的最后一个值。实际上,所有值都打印出来,什么不是。一旦它打印出最终值&索引,它会出现故障。我假设这是因为它试图访问第20个值。我该如何防止这种情况发生?
主要文件代码:
int index = 0;
while (index < list.length())
{
cout << list.getNextItem(index) << " " << index << "\n";
index++;
}
HEADER CODE:
template <class Type>
Type doublyLinkedList<Type>::getNextItem(const Type& val) const
{
nodeType<Type> *current; //pointer to traverse the list
current = first; //set current to point to the first node
for (index=0; index < val; index++)
{
if (current != NULL)
{
current = current->next;
}
}
return current->info;
}//end getNextItem
答案 0 :(得分:3)
for (index=0; index < val; index++)
{
if (current != NULL)
{
current = current->next;
}
}
return current->info;
您将current
分配给current->next
。当它是null
然后时,当current->info
为...时,您尝试返回current
。
至少那是我的怀疑;你发布的代码不完整,不可能给你一个具体的答案......但这肯定是罪魁祸首。
答案 1 :(得分:1)
您的current->info
在空检查之外。当current
为空时,您无法访问其指针并导致seg错误