链表未打印出正确的数据



我很难理解为什么我的链表实现的打印输出方法不起作用。当链接列表的数字为1-5时,它会使用以下代码打印出0

void printList(List& source, bool forward)
{

if (forward)
{
ListItr start = ListItr(source.first());
while (!start.isPastEnd())
{
cout << start.retrieve() +" ";
start.moveForward();
}
}
else
{
ListItr end = ListItr(source.last());
while (!end.isPastBeginning())
{
cout << end.retrieve() + " ";
end.moveBackward();
}    
}
cout << endl;
}

然而,在我过去的实现中,它运行得很好,我很困惑为什么,因为它们是相同的,只是有不同的可变位置。

void printList(List &source, bool forward){
ListItr itr;
if(forward)
{
itr = ListItr(source.first());
while(!itr.isPastEnd())
{
cout << itr.retrieve() << " ";
itr.moveForward();
}
}
else
{
itr = ListItr(source.last());
while(!itr.isPastBeginning())
{
cout << itr.retrieve() << " ";
itr.moveBackward();
}
}
cout << endl;
}

因为您试图将itr.retrieve()" "的返回值相加,所以该值在ASCII中是32的小数。我的意思是,你的失败代码;

cout << start.retrieve() +" ";

您的工作代码;

cout << itr.retrieve() << " ";

相关内容

  • 没有找到相关文章

最新更新