Подтвердить что ты не робот

Каков текущий элемент в Scala DoubleLinkedList?

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

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

4b9b3361

Ответ 1

A DoubleLinkedList является в то же время самым списком и списком node, аналогичным :: для регулярного 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