【发布时间】:2011-10-14 07:59:44
【问题描述】:
我正在查看 using 和 DoubleLinkedList。它的 remove() 方法说 “从双链表中删除当前节点。” 但页面中没有其他对 current 的引用。
当前节点是什么,如何设置它,当然这不是删除项目的唯一方法?
【问题讨论】:
我正在查看 using 和 DoubleLinkedList。它的 remove() 方法说 “从双链表中删除当前节点。” 但页面中没有其他对 current 的引用。
当前节点是什么,如何设置它,当然这不是删除项目的唯一方法?
【问题讨论】:
DoubleLinkedList 同时是列表本身和一个列表节点,类似于常规List 的::。您可以分别使用next 和prev 从一个单元格导航到下一个单元格或上一个单元格,并使用elem 获取单元格的值。
scala> val list = collection.mutable.DoubleLinkedList(1,2,3,4,5)
list: scala.collection.mutable.DoubleLinkedList[Int] = DoubleLinkedList(1, 2, 3, 4, 5)
scala> list.next.next.remove() // list.next.next points on 3rd cell
scala> list
res0: scala.collection.mutable.DoubleLinkedList[Int] = DoubleLinkedList(1, 2, 4, 5)
删除第一个单元格时要小心,因为您需要将保存列表的 var 重新分配给下一个单元格:
scala> val list = collection.mutable.DoubleLinkedList(1,2,3,4,5)
list: scala.collection.mutable.DoubleLinkedList[Int] = DoubleLinkedList(1, 2, 3, 4, 5)
scala> list.remove() // remove first item
scala> list // this is now a 'dangling' cell, although it still points to the rest of the list
res6: scala.collection.mutable.DoubleLinkedList[Int] = DoubleLinkedList(1, 2, 3, 4, 5) // uh? didn't I remove the first cell?
scala> list.next.prev // we can check that it is not pointed back to by its next cell
res7: scala.collection.mutable.DoubleLinkedList[Int] = null
【讨论】:
prev,直到找到null。