2011-10-14 8 views
13

मैं usingDoubleLinkedList पर देख रहा हूं। यह हटा है() विधि "डबल लिंक वाली सूची से वर्तमान नोड को हटा देता है।" लेकिन पृष्ठ में वर्तमान पर कोई अन्य संदर्भ नहीं हैं।स्कैला डबललिंक्डलिस्ट में वर्तमान तत्व क्या है?

वर्तमान नोड क्या है, मैं इसे कैसे सेट करूं, और निश्चित रूप से यह किसी आइटम को हटाने का एकमात्र तरीका नहीं हो सकता है?

उत्तर

16

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

अच्छा जवाब - शर्म की बात नहीं कर रहे डॉक्स का एक सा StackOverflow के रूप में अच्छा नहीं है! –

+1

क्या कई बार कॉल किए बिना पहले वापस जाने का कोई तरीका है? – user1377000

+1

नहीं, आपको 'prev' को तब तक कॉल करना होगा जब तक आप' शून्य 'नहीं पाते। –

संबंधित मुद्दे