2011-10-14 7 views

cevap

16

bir DoubleLinkedList aynı zamanda düzenli List için :: benzer liste kendisi ve bir liste düğümü vardır. Sırasıyla bir hücreden diğerine veya next ve prev ile bir öncekine gidebilir ve bir hücrenin değerini elem ile alabilirsiniz. Eğer ilk hücreyi kaldırmak eğer bir sonraki hücreye liste tutan senin Var yeniden atama gerekeceğinden

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) 

Dikkatli olun:

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 
+5

İyi cevap - dokümanlar değiller bir utanç biraz StackOverflow kadar iyi değil! –

+1

Birçok kez aramadan ilk geri dönmek için bir yolu var mı? – user1377000

+1

Hayır, "null" ifadesini bulana kadar 'prev 'çağırmaya devam etmelisiniz. –