2011-10-14 7 views
13

私はusingを見ています。DoubleLinkedListです。 remove()メソッドはと表示されます。 "現在のノードをダブルリンクリストから削除します。"がありますが、の現在のへの参照は他にありません。Scala DoubleLinkedListの現在の要素は何ですか?

現在のノードとは何ですか、どのように設定しますか?これはアイテムを削除する唯一の方法ではありませんか?

DoubleLinkedList

答えて

16

同時に正規Listため::と同様リスト自体リストノード、です。 nextprevで1つのセルから次のセル、または前のセルに移動し、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 
+5

良い答え - ドキュメントが上がらない恥のビットStackOverflowほど良い! –

+1

prevを何度も呼び出さずに最初に戻る方法はありますか? – user1377000

+1

いいえ、あなたが 'null'を見つけるまで、' prev'を呼び出す必要があります。 –

関連する問題