0

在 Scala 中:似乎没有remove()方法LinkedList,由于某种原因我无法理解。虽然有一个DoubleLinkedList,但我不需要双链表。

另外,我怎样才能将current元素设置为第一个?我怎么知道它什么时候结束(是null吗?)

4

2 回答 2

2

中没有current元素LinkedList

中只有 2 个字段LinkedListelem(or head) for element 和next(or tail) for LinkedList

您可以使用 测试是否LinkedList为空isEmpty。每个都LinkedList包含一个空LinkedList的,因为它是最深的尾巴。有关 ASCII 插图,请参阅文档

您可以像这样删除第 N 个元素(如果有):

var current = myLinkedList.drop(n-2)
current.next = current.next.next

例子:

scala> val myList = LinkedList(1,2,3,4,5)
myList: scala.collection.mutable.LinkedList[Int] = LinkedList(1, 2, 3, 4, 5)

scala> val current = myList.drop(1)
current: scala.collection.mutable.LinkedList[Int] = LinkedList(2, 3, 4, 5)

scala> current.next = current.next.next
current.next: scala.collection.mutable.LinkedList[Int] = LinkedList(4, 5)

scala> myList
res0: scala.collection.mutable.LinkedList[Int] = LinkedList(1, 2, 4, 5)

你不能以这种方式删除第一个元素,但你可以忘记它:

scala> var myList = LinkedList(1,2,3,4,5)
myList: scala.collection.mutable.LinkedList[Int] = LinkedList(1, 2, 3, 4, 5)

scala> myList = myList.next
myList: scala.collection.mutable.LinkedList[Int] = LinkedList(2, 3, 4, 5)
于 2013-04-02T13:05:16.547 回答
0

首先,是否有特殊原因需要 LinkedList 而不是 Scala 中的标准 List?

正如 scaladoc 中所警告的那样,您可以很容易地以 LinkedList 结束 NPE,而 List 不会有这个问题,除非您实际引入 null 值。

List tail 方法通常是您所需要的。请首先考虑这种方法,并且仅在绝对必要时才求助于专门的课程。

于 2013-04-02T13:07:31.243 回答