2012-04-15 9 views
17

मैं लिंक्डलिस्ट उदाहरण के एन-वें तत्व को कैसे प्राप्त कर सकता हूं? क्या कोई अंतर्निहित तरीका है या मुझे अपना खुद का कार्यान्वयन शुरू करने की आवश्यकता हो सकती है? उदाहरण के लिए एक विस्तार विधि?मैं LinkedList <T> में n-th तत्व कैसे प्राप्त करूं?

धन्यवाद

+1

सबसे पहले, क्यों? निश्चित रूप से आपको एक लिंक्ड सूची चाहिए? – alexn

+0

मेरे पास InsertedSortList का एक उदाहरण है जो एक LinkedList डेटा संरचना पर InsertAt (int i) जैसी विधियों का उपयोग करता है। यही कारण है कि मैं पूछना चाहता था। – pencilCake

+0

क्या यह एसओ या एमएसडीएन दस्तावेज़ीकरण है? –

उत्तर

27

ElementAt विस्तार विधि यह करना होगा:

// This is 0-based of course 
var value = linkedList.ElementAt(n); 

मत भूलना यह एक हे (एन) आपरेशन क्योंकि LinkedList<T> सूचकांक द्वारा एक आइटम तक पहुँचने के किसी भी अधिक कुशल तरीका प्रदान नहीं करता है। यदि आपको नियमित रूप से ऐसा करने की ज़रूरत है, तो यह सुझाव देता है कि आपको शुरू करने के लिए एक लिंक्ड सूची का उपयोग नहीं करना चाहिए।

+8

माइक्रोसॉफ्ट, कृपया, दस्तावेज़ीकरण में जटिलता जोड़ें :) –

+0

@ जोन नाइटपिक नहीं हो रहा है, लेकिन क्या यह आवश्यक है कि अगर मैं 'IList ' लागू करता हूं, तो इंडेक्सिंग ऑपरेशन 'ओ (एन) 'नहीं हो सकता है? – nawfal

+1

@nawfal: संपादित करेंगे। –

6

आप ElementAt() गणनीय विस्तार विधि का उपयोग कर सकते हैं। कारण लिंक्डलिस्ट मूल रूप से यादृच्छिक पहुंच का समर्थन नहीं करता है क्योंकि यह डेटा संरचना के लिए एक अक्षम अक्षम ऑपरेशन है। यदि आप इसे अक्सर करने जा रहे हैं तो आपको अधिक उचित डेटा संरचना का उपयोग करने के बारे में सोचना चाहिए।

2

आप इसे list.ElementAt(n) या list.Skip(n - 1).First() में LINQ के साथ कर सकते हैं, लेकिन यदि आप स्वयं को एक लिंक्ड सूची में अनुक्रमित पहुंच प्राप्त करते हैं तो आप शायद कुछ गलत कर रहे हैं (लिंक्ड सूचियां इस ऑपरेशन का कुशलतापूर्वक समर्थन नहीं करती हैं)। शायद एक और डेटा संरचना अधिक उपयुक्त होगा?

0

मैं अपने सूची का दूसरा तत्व

(1 आइटम 2 के आधार पर पर एक मूल्य के अद्यतन करने के लिए) मान लें कि आप आवश्यक कदम ले जा रहे हैं आपको दो आइटम आप बस कर सकते हैं की क्या ज़रूरत है सुनिश्चित करने के लिए प्राप्त करने के लिए की जरूरत ऐसा करें:

list.First.Next.Value 
संबंधित मुद्दे