Un DoubleLinkedList
è allo stesso tempo la lista stessa e una lista dei nodi, simile alla ::
per un normale List
. Puoi passare da una cella alla successiva o alla precedente con next
e prev
, rispettivamente, e ottenere il valore di una cella con 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)
Fare attenzione se si rimuove la prima cella, come è necessario riassegnare la propria var tenendo la lista alla cella successiva:
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
fonte
2011-10-14 08:20:06
Buona risposta - un po 'un peccato la documentazione aren buono come StackOverflow! –
C'è un modo per tornare al primo senza chiamare prev molte volte? – user1377000
No, devi continuare a chiamare 'prev' fino a trovare' null'. –