void currentfor()
{
if(current == NULL)
{
cout << "You don't have any members yet!" << endl;
}
else
{
if (current->next == NULL)
cout << "This is the end of the list." << endl;
else
current = current->next;
}
}
void currentbac()
{
if (current == first)
cout << "This is the beginning of the list." << endl;
else
{
list *previous;
previous = first;
while (previous->next != current)
{
previous = previous->next;
}
current = previous;
}
}
我几乎在那里,但仍有问题。
当我移动当前位置时,如何知道当前位置的位置?因为每当我使用这两个移动功能时,它似乎都不起作用。我移动时尝试在“当前”位置添加一个节点,但它总是在所有节点之后添加项目。
在我之前的代码中加上我无法改变“&lt; - 当前位置”指向所有节点而不是一个节点的事实。
我想指向一个节点,因此更清楚的是用户知道当前指针所在的位置。
希望人们理解.-。我只是不习惯C ++,但我的教授希望我自己学习(无论那意味着什么)我一直在尝试在线获取参考资料,因此很难获得我正在进行的项目的链接列表信息。
答案 0 :(得分:1)
“当我移动时,我尝试在”当前“位置添加一个节点,但它总是在所有节点之后添加。”
问题在于您添加节点代码,而不是移动代码。
您尚未发布添加节点代码,因此很难说出问题所在。您必须在新节点之前和之后取消链接节点并将它们链接到新节点,然后将新节点链接到之前和之后的两个旧节点 - 始终记住要小心处理第一个和最后一个节点。你做完了吗?
答案 1 :(得分:0)
如果您只需要项目的链接列表实现,建议使用std :: list。看看http://www.cplusplus.com/reference/stl/list/。如果您想学习c ++,那么该页面上还有一个教程。
答案 2 :(得分:0)
如果您希望能够向后浏览链接列表,我建议您将其实现为doubly linked list。也就是说,每个元素上都有一个next和prev指针。以这种方式导航会更简单。
答案 3 :(得分:0)
指定节点的结构。 (我的意思是您在列表节点中保存的数据。例如,Int或float或某个对象)。正如JohnFx所说,向后遍历的最佳方法是使用双向链接列表。指定您正在使用的插入代码和您的节点sturture。