while(element != null)
{
//temp = element (useless)
element = element.node;
//can't do (element.node).method();
//neither temp.method();
}
要遍历LinkedList,我们会执行上述操作。但是,如果我想回到之前的节点怎么办?这甚至可能吗?我想过将节点存储在临时变量中,但我无法更改LinkedList中的节点,因为临时变量只存储节点的值而不是对象。
我没想到LinkedList会如此难以使用,因为我习惯于使用非动态数据结构(数组)。
答案 0 :(得分:0)
有一个名为"Doubly linked list"的相关数据结构,除了存储指向下一个元素的指针之外,还存储指向前一个元素的指针。这样,您不仅可以进入列表,还可以备份。这是否符合您的目的?
另外,为了回应你关于使用临时变量的建议,我认为只要你存储的数据是一个对象(而不是一个原始数据),你实际上会工作,你需要做的改变是改变到对象而不是重新分配对象。
答案 1 :(得分:0)
正如Jimmy Lee所提到的那样,双重链表是经典的方法。您还可以保存对“有趣”节点的引用。或者,您可以创建一个新的链接列表,当您遍历列表时,链接的方向相反。最后,一个技巧是在遍历列表时简单地反转链接,但这会更改原始列表。