while(element != null)
{
//temp = element (useless)
element = element.node;
//can't do (element.node).method();
//neither temp.method();
}
要遍历LinkedList,我们执行上述操作。但是,如果我想回到以前的节点怎么办?这可能吗?我想过将节点存储在一个临时变量中,但是我无法更改LinkedList中的节点,因为临时变量只存储节点的值,而不是对象的值。
我没想到LinkedList这么难处理,因为我已经习惯了处理非动态数据结构(数组)。
有一种相关的数据结构叫做"双链表",它除了存储指向下一个元素的指针外,还存储指向前一个元素的指针。这样,你不仅可以浏览列表,还可以返回列表。这能达到你的目的吗?
另外,为了响应您使用临时变量的建议,我认为实际上只要您存储的数据是对象(而不是原语),并且您需要进行的更改是对对象的更改,而不是对对象的重新分配。
双重链表,正如上面Jimmy Lee提到的,是经典的方法。您还可以保存对"感兴趣的"节点的引用。或者你可以创建一个新的链表,当你遍历链表时,链表的方向是相反的。最后,一个技巧是在遍历列表时简单地反转链接,但这会改变原始列表。