सदस्य:Aleenajoy03.52/प्रयोगपृष्ठ/1

मुक्त ज्ञानकोश विकिपीडिया से

लिंक्ड सूचीयां

परिचय:[संपादित करें]

  लिंक्ड सूची एक रैखिक डेटा संरचना है| यह एक डेटा संरचना है जिसमें नोड्स के एक समूह शामिल होते हैं जो एक साथ अनुक्रम का प्रतिनिधित्व करते हैं। नोड में दो फ़ील्ड होते हैं: एक पूर्णांक मान और अगले नोड पर एक लिंक। अंतिम नोड सूची के अंत को दर्शाते हुए एक टर्मिनेटर से जुड़ा हुआ है। आखिरी नोड को सूची के अंत को दर्शाने के लिए उपयोग किए जाने वाले टर्मिनेटर से जोड़ा जाता है। लिंक्ड सूची तत्व निरंतर स्थान पर संग्रहीत नहीं होते हैं और तत्वों को पॉइंटर्स का उपयोग करके लिंक किया जाता है। लिंक्ड सूचियां सबसे आसान और सबसे आम डेटा संरचनाओं में से हैं| उन्हें सूट, ढेर, कतार, साहचर्य सरणियों और एस-अभिव्यक्ति आदि सहित कई अन्य सामान्य सार प्रकार के डेटा को लागू करने के लिए उपयोग किया जा सकता है। एक परंपरागत सरणी के ऊपर एक लिंक्ड सूची का मुख्य लाभ यह है कि सूची तत्व आसानी से सम्मिलित या निकाला जा सकता है बिना पूरे आवंटन के पुनर्गठन या डेटा वस्तु को स्मृति या डिस्क पर संसाधित नहीं करने की आवश्यकता होती है, जबकि एक सरणी को कार्यक्रम संकलन और चलने से पहले स्रोत कोड में घोषित किया जा सकता है। लिंक्ड सूचियों सूची में किसी भी बिंदु पर नोड्स को सम्मिलित करने और हटाने की अनुमति देता है, और यह सूची निरंतर संख्या के साथ ऐसा कर सकता है यदि लिंक्स ट्रांस्सारल के दौरान जोड़े जाने या हटाए जाने वाले लिंक के पिछले लिंक को बनाए रखा जाता है।
लिंक्ड सूचीयां

प्रकार:[संपादित करें]

लिंक्ड सूचियों के विभिन्न प्रकार हैं:

  1. सिंग्ली लिंक्ड सूचीयं : सिंगली लिंक्ड सूचियों में नोड्स होते हैं जिसमें एक डेटा फ़ील्ड और साथ ही 'अगली' फ़ील्ड होती है, जो नोड्स की रेखा में अगले नोड को इंगित करता है। संचालन जो सिंग्ली लिंक्ड सूचीयं में किया जा सकता है इसमें सम्मिलन, विलोपन और ट्रवर्सल शामिल हैं।
  2. डब्ली लिंक्ड सूचीयं : 'डब्ली लिंक्ड सूचीयों' में, प्रत्येक नोड में अगली-नोड लिंक के अलावा, एक दूसरा लिंक फ़ील्ड जो क्रम में 'पिछले' नोड की ओर इशारा करता है। दो लिंक को 'अग्रेषित' ('एस') और 'पीछे', या 'अगले' और 'पिछला' ('पिछला') कहा जा सकता है।
  3. मल्टिप्ल लिंक्ड सूचीयं : 'मल्टिप्ल लिंक्ड सूचीयं' में, प्रत्येक नोड में दो या दो से अधिक लिंक फ़ील्ड होते हैं, प्रत्येक फ़ील्ड को अलग-अलग क्रम में डेटा रिकॉर्ड के समान सेट से कनेक्ट करने के लिए इस्तेमाल किया जाता है (उदाहरण के लिए, नाम से, विभाग द्वारा, जन्म तिथि आदि| जबकि डब्ली लिंक्ड सूचीयं को मल्टिप्ल लिंक्ड सूचीयं के विशेष मामले के रूप में देखा जा सकता है, तथ्य यह है कि दो आदेश एक दूसरे की तरफ के विपरीत होते हैं, जो सरल और अधिक कुशल एल्गोरिदम हैं, इसलिए उन्हें आमतौर पर एक अलग मामला माना जाता है।
  4. सर्कुलर लिंक्ड सूचीयं: एक सूची के अंतिम नोड में, लिंक फ़ील्ड में अक्सर एक अशक्त संदर्भ होता है, एक विशेष मान जिसे आगे नोड्स की कमी इंगित करने के लिए उपयोग किया जाता है | एक कम आम सम्मेलन यह सूची के पहले नोड को इंगित करने के लिए है; उस मामले में सूची को 'सर्कुलर' या 'सर्कुलरलि लिन्केड' कहा जाता है; अन्यथा इसे 'ओपन' या 'लीनियर' कहा जाता है | एक सर्कुलर डब्ली लिंक्ड सूचीयं के मामले में, ऐसा ही एक परिवर्तन होता है कि पूर्व सूची का अंत, या "पूंछ", वापस सूची से सामने या "सिर" से जुड़ा हुआ है और इसके विपरीत। लिंक्ड सूची में सूची के कई नोड शामिल हैं।
  5. सेन्टिनेल नोडस: कुछ कार्यान्वयन में एक अतिरिक्त 'सेन्टिनेल' या 'डमी' नोड को पहले डेटा रिकॉर्ड से पहले जोड़ा जा सकता है या पिछले एक के बाद। इस सम्मेलन में कुछ लिंक्स-हैंडलिंग एल्गोरिदम को सरल बनाता है और सभी लिंक सुरक्षित रूप से संदर्भित किए जा सकते हैं और हर सूची (यहां तक कि कोई भी डेटा तत्व नहीं है) हमेशा "पहले" और "आखिरी" नोड है।
  6. खाली सूचीयं : एक खाली सूची एक ऐसी सूची है जिसमें डेटा रिकॉर्ड नहीं है। यह आमतौर पर यह कह रहा है कि इसमें शून्य नोड्स हैं | यदि सेन्टिनेल नोड्स का उपयोग किया जा रहा है, तो सूची को आमतौर पर रिक्त कहा जाता है जब केवल सेन्टिनेल नोड होता है |

फायदे और नुकसान:[संपादित करें]

       लिंक्ड सूचियों के लाभ यह है कि: ये एक गतिशील डेटा संरचना है, जो प्रोग्राम चल रहा है, जबकि बढ़ सकता है और स्मृति को आवंटित, आवंटित और वितरित कर सकता है। सम्मिलन और विलोपन नोड ऑपरेशन आसानी से एक लिंक की गई सूची में कार्यान्वित किया जाता है। डायनेमिक डेटा स्ट्रक्चर्स जैसे स्टैक्स और कतारों को लिंक की गई सूची का उपयोग करके लागू किया जा सकता है। लिंक्ड सूची के लिए प्रारंभिक आकार को परिभाषित करने की कोई आवश्यकता नहीं है। वस्तुओं को सूची के मध्य से जोड़ या हटाया जा सकता है। बैक ट्रैकिंग दो तरह से जुड़े सूची में संभव है।
        नुकसान यह है कि: वे अपने पॉइंटर्स द्वारा उपयोग किए जाने वाले भंडारण के कारण arrays की तुलना में अधिक मेमोरी का उपयोग करते हैं। लिंक्ड सूची में नोड्स शुरुआत से क्रम में पढ़ी जानी चाहिए क्योंकि लिंक्ड सूचियां अभिगम में अंतर्निहित अनुक्रमिक हैं | नोड्स को असम्बद्ध रूप से संग्रहीत किया जाता है, विशेषकर सूची में व्यक्तिगत तत्वों को एक्सेस करने के लिए आवश्यक समय बढ़ाता है, विशेषकर एक CPU कैश के साथ। ट्रॉवर्सिंग रिवर्स करने की बात करते समय लिंक्ड सूचियों में कठिनाइयां होती हैं। उदाहरण के लिए, अकेले लिंक्ड सूचियां पीछे की ओर नेविगेट करने के लिए बोझिल होती हैं, जबकि दोगुनी लिंक सूची पढ़ने के लिए कुछ आसान होती है, बैक-पॉइंटर के लिए स्थान आवंटित करने में स्मृति का उपयोग होता है |

[1] [2]

  1. https://www.geeksforgeeks.org/linked-list-set-1-introduction/
  2. https://en.wikipedia.org/wiki/Linked_list