Каков текущий элемент в Scala DoubleLinkedList? - PullRequest
13 голосов
/ 14 октября 2011

Я смотрю на , используя a DoubleLinkedList . Это метод remove (): «Удаляет текущий узел из списка двойных ссылок.» , но на странице нет других ссылок на current .

Что такое текущий узел, как мне его настроить, и, конечно, это не может быть единственным способом удаления элемента?

1 Ответ

16 голосов
/ 14 октября 2011

A 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)

Будьте осторожны, если вы удалите первую ячейку, так как вам нужно будет переназначить вашу переменную, содержащую список, в следующую ячейку:

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
...