在Scala中:remove()
似乎没有LinkedList
方法,由于某些原因我无法理解。虽然DoubleLinkedList
有一个,但我不需要双链表。
另外,如何将current
元素设置为第一个元素?我怎么知道它何时到达终点(是null
?)
答案 0 :(得分:2)
current
中没有LinkedList
元素。
LinkedList
中只有2个字段:elem
(或head
)表示元素,而next
(或tail
表示LinkedList
您可以使用LinkedList
测试isEmpty
是否为空。每个LinkedList
都包含一个空的LinkedList
,因为它是最深的尾巴。有关ASCII插图,请参阅documentation。
您可以删除第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)
答案 1 :(得分:0)
首先,是否有一个特殊原因需要在Scala标准List上使用LinkedList?
正如在scaladoc中警告的那样,您可以很容易地使用LinkedList结束NPE,而List除非您实际引入空值,否则不会出现此问题。
List tail方法通常都是你需要的。请首先考虑这种方法,如果绝对必要,只能使用专门的课程。