ऐरे सूची और लिंक्ड सूची के बीच का अंतर

Anonim

डाटा कैसे संग्रहीत किया जाता है?

डेटा संग्रहण और पुनर्प्राप्ति के मामले में ऐरे सूची और लिंक्ड सूची सामान्य शब्द हैं। हालांकि बहुत सारे स्टोरेज डिवाइस हैं, अंततः, वे भंडारण तंत्र पर निर्भर करते हैं। ये दो भंडारण तंत्र आपके डेटा को भंडारण उपकरणों में रखता है और जब ज़रूरत होती है तब उन्हें पुनः प्राप्त करता है। आइए देखें कि वे अपनी स्मृति में डेटा कैसे संग्रहीत करते हैं ऐरे सूची अनुक्रमिक भंडारण का उपयोग करती है, और डेटा के टुकड़े दूसरे के बाद एक में जमा किए जाते हैं। यह शायद भंडारण का एक सरल रूप है - यह भ्रम से बचा जाता है हां, हम अगली आइटम या डेटा को सरणी सूची के अगले स्मृति स्थान से पुनः प्राप्त कर सकते हैं; हालांकि, यह लिंक्ड सूची में पॉइंटर्स की सहायता से संग्रहीत किया जाता है। यहां हमें भंडारण के लिए दो स्मृति स्थानों की आवश्यकता है - डेटा के लिए एक, सूचक के लिए दूसरा एक सूचक अगले डेटा की स्मृति स्थान को संबोधित करता है हम आसानी से समझ सकते हैं कि लिंक्ड सूची में डेटा को क्रमिक रूप से संग्रहीत नहीं किया जाता है; बल्कि, यह एक यादृच्छिक भंडारण तंत्र का उपयोग करता है स्मृति में डेटा स्थान को ढूंढने में महत्वपूर्ण तत्व हैं।

गतिशील सरणी और लिंक्ड सूची

हमने पहले से ही चर्चा की है कि दोनों स्टोरेज तंत्र डेटा में डाले गए हैं और हम ऐरे सूची की आंतरिक भंडारण योजना के लिए एक शब्द 'गतिशील सरणी' दे सकते हैं। यह सिर्फ दूसरे के बाद एक-दूसरे के बाद डाटा टुकड़े डालता है- जबकि लिंक्ड सूची में अगले आइटम को ट्रैक करने के लिए संकेतक की सहायता से आंतरिक सूची का उपयोग किया जाता है इसलिए, यह एक आंतरिक लिंक्ड सूची का उपयोग करता है, जैसे एक सिंगल या दोगुनी लिंक सूची में हमें अगले डेटा दिखाने के लिए।

मेमोरी उपयोग

जैसा कि ऐरे सूची केवल वास्तविक डेटा को संग्रहीत करता है, हमें केवल हमारे द्वारा संग्रहीत आंकड़ों के लिए स्थान की आवश्यकता होती है। इसके विपरीत, लिंक्ड सूची में, हम पॉइंटर्स का उपयोग भी करते हैं। इसलिए, दो स्मृति स्थानों की आवश्यकता है, और हम कह सकते हैं कि लिंक सूची में ऐरे सूची की तुलना में अधिक मेमोरी खपत होती है। लिंक्ड सूची का एक लाभप्रद पक्ष यह है कि ऐरे सूची के विरोध में हमारे डेटा को संग्रहीत करने के लिए इसे लगातार स्मृति स्थानों की आवश्यकता नहीं है संकेतक अगले डेटा स्थान की स्थिति रखने में सक्षम हैं, और हम भी छोटे स्मृति स्लॉट का उपयोग कर सकते हैं जो निरंतर नहीं हैं। जब मेमोरी उपयोग की बात आती है, तो संकेतक लिंक्ड सूची में मुख्य भूमिका निभाते हैं, और इससे उनकी प्रभावशीलता भी होती है

आरंभिक ऐरे सूची और लिंक्ड सूची का आकार

ऐरे सूची के साथ, यहां तक ​​कि एक खाली सूची में 10 के आकार की आवश्यकता होती है, लेकिन लिंक्ड सूची के साथ, हमें इतनी बड़ी जगह की आवश्यकता नहीं है हम 0 के आकार के साथ एक खाली लिंक्ड सूची बना सकते हैं। बाद में, हम आवश्यकतानुसार आकार बढ़ा सकते हैं।

डेटा पुनःप्राप्ति

आंकड़ों की पुनर्प्राप्ति सरणी सूची में सरल है क्योंकि यह क्रमिक रूप से स्टोर करता है यह सब पहले डेटा स्थान की पहचान करता है; वहां से, शेष स्थान को पुनः प्राप्त करने के क्रम में अगले स्थान तक पहुंचा जा सकता है।यह पहली डाटा स्थिति की तरह गणना करता है + 'एन', जहां 'एन' ऐरे सूची में डेटा का क्रम है। लिंक्ड सूची पहले डेटा स्थान को खोजने के लिए प्रारंभिक सूचक को संदर्भित करता है, और वहां से यह अगले डेटा स्थान को खोजने के लिए प्रत्येक डेटा से जुड़े सूचक को संदर्भित करता है। पुनर्प्राप्ति की प्रक्रिया मुख्यतः यहां पर पॉइंटर्स पर निर्भर होती है, और वे प्रभावी रूप से हमें अगले डेटा स्थान दिखाती है।

डेटा का समाप्ति

डेटा के अंत में चिह्नित करने के लिए ऐरे सूची में शून्य मान का उपयोग होता है, जबकि लिंक्ड सूची इस उद्देश्य के लिए एक शून्य सूचक का उपयोग करती है। जैसे ही प्रणाली रिकक्त डेटा को पहचानती है, ऐरे सूची अगले डेटा पुनर्प्राप्ति को रोक देती है। इसी प्रकार से, रिक्त सूचक अगले सिस्टम पुनर्प्राप्ति के आगे बढ़ने से सिस्टम को रोकता है।

ट्रैवर्सल रिवर्सल

लिंक्ड सूची हमें अवरोही देने वाले () की मदद से रिवर्स दिशाओं में जाने की अनुमति देता है। हालांकि, हमारे पास ऐरे सूची में ऐसी कोई सुविधा नहीं है - रिवर्स ट्रवर्सल यहां एक समस्या बन जाती है।

सिंटेक्स

हमें दोनों स्टोरेज तंत्र के जावा सिंटैक्स को देखें।

ऐरे सूची निर्माण:

सूची सूची = नए अर्रेइस्ट ();

अर्रे सूची में वस्तुओं को जोड़ना:

अर्रेलिस्टवाद जोड़ने ("NAME1");

Arraylistsample। जोड़ने ("NAME2");

यह है कि परिणामस्वरूप ऐरे सूची कैसे दिखाई देगी - [नाम 1, नाम 2]।

लिंक्ड सूची सृजन:

लिंक्ड लिंक सूची = नया लिंकलेस्ट ();

लिंक्ड सूची में वस्तुओं को जोड़ना:

लिंक्डलिस्टवाद जोड़ने ("NAME3");

Linkedlistsample। जोड़ने ("NAME4");

इस प्रकार परिणामस्वरूप लिंक्ड सूची की तरह दिखेगी - [नाम 3, नाम 4]

प्राप्त या खोज ऑपरेशन के लिए कौन सा बेहतर है?

ऐरे की सूची किसी भी डेटा खोज को चलाने के लिए ओ (1) समय लेती है, जबकि लिंक्ड सूची में एन वें डेटा खोज के लिए ओ ओ (एन) ले जाता है इसलिए, एक ऐरे सूची हमेशा किसी भी डेटा खोज के लिए एक निरंतर समय का उपयोग करती है, लेकिन लिंक्ड सूची में, समय लिया डेटा की स्थिति पर निर्भर करता है। इसलिए, ऐरे सूचियां हमेशा प्राप्त या खोज संचालन के लिए हमेशा बेहतर विकल्प होती हैं।

जो सम्मिलन या जोड़ ऑपरेशन के लिए बेहतर है?

दोनों ऐरे सूची और लिंक्ड लिस्ट डेटा के लिए ओ (1) समय लेते हैं। लेकिन अगर सरणी पूर्ण हो गई है, तो ऐरे की सूची में इसका आकार बदलने के लिए काफी समय लगता है और आइटम को नए में कॉपी कर दिया जाता है। ऐसे मामले में, लिंक्ड सूची बेहतर विकल्प है।

निकालें ऑपरेशन के लिए कौन सा बेहतर है?

हटाए जाने का ऑपरेशन ऐरे सूची और लिंक्ड सूची दोनों में लगभग बराबर समय लगता है। ऐरे सूची में, यह ऑपरेशन डेटा को हटा देता है और फिर नए सरणी बनाने के लिए डेटा की स्थिति को बदलता है - यह ओ (एन) समय लेता है लिंक्ड सूची में, यह ऑपरेशन विशेष डेटा पर जाता है और नई सूची बनाने के लिए पॉइंटर पदों को बदलता है। ट्रवर्सल और हटाने का समय यहां ओ (एन) के रूप में भी है।

जो तेज़ है?

हम जानते हैं कि एक ऐरे सूची वास्तविक डेटा को संग्रहीत करने के लिए एक आंतरिक सरणी का उपयोग करता है। इसलिए, यदि कोई डेटा हटा दिया गया है, तो सभी आगामी डेटा को स्मृति शिफ्ट की आवश्यकता हैजाहिर है, इसके लिए काफी समय की आवश्यकता होती है और चीजों को धीमा कर देती है लिंक्ड सूची में ऐसी मेमोरी पाईंट की आवश्यकता नहीं है, क्योंकि जो भी होता है वह सूचक स्थान बदलता है। इसलिए, एक लिंक्ड सूची किसी भी प्रकार के डेटा संग्रहण में ऐरे सूची से अधिक तेज है। हालांकि, यह पूरी तरह से आपरेशन के प्रकार पर निर्भर है, i। ई। गेट या सर्च ऑपरेशन के लिए, लिंक्ड सूची में ऐरे सूची से बहुत अधिक समय लगता है। जब हम समग्र प्रदर्शन को देखते हैं, तो हम यह कह सकते हैं कि लिंक्ड सूची तेजी से है

एक सरणी सूची और एक लिंक्ड सूची का उपयोग कब किया जाए?

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

हमें सारणी रूप में अंतरों को देखें।

एस। एरे सूची लिंक्ड सूची 1
डेटा संग्रहण फ़ैशन अनुक्रमिक डेटा संग्रहण का उपयोग करता है
गैर-अनुक्रमिक डेटा संग्रहण का उपयोग करता है 2 < आंतरिक भंडारण योजना आंतरिक डायनामिक सरणी बनाए रखता है एक लिंक्ड सूची बनाए रखता है
3 मेमोरी उपयोग डेटा के लिए मेमोरी स्पेस की आवश्यकता होती है डेटा के लिए मेमोरी स्पेस की आवश्यकता होती है संकेतक
4 आरंभिक सूची का आकार कम से कम 10 वस्तुओं के लिए स्थान की आवश्यकता है स्थान की आवश्यकता नहीं है और हम 0 की भी एक खाली लिंक्ड सूची बना सकते हैं।
5 डाटा पुनःप्राप्ति पहले डेटा स्थिति + 'एन' की तरह कम्प्यूट हो जाती है, जहां 'एन' ऐरे सूची में डेटा का क्रम होता है पहले या आखिरी दिनों तक ट्रैवर्सल आवश्यक डेटा तक आवश्यक नहीं है
6 < डेटा का अंत नल मानों का अंत चिन्हांकित करें नल पॉइंटर का अंत होता है 7
रिवर्स ट्रैवर्सल इसे अनुमति नहीं देता अवरोही देने वाले की मदद से इसे अनुमति देता है () 8
लिस्ट क्रिएशन सिंटैक्स सूची सरणीएं = नया सरणी सूची (); सूचीबद्ध लिंक सूची = नया लिंकलेस्ट (); 9
ऑब्जेक्ट्स जोड़ना अर्रेलिस्टवाद जोड़ने ("NAME1"); Linkedlistsample। जोड़ने ("NAME3");

10

प्राप्त करें या खोजें ओ (1) समय लेता है और प्रदर्शन में बेहतर होता है ओ (एन) समय लेता है और प्रदर्शन डेटा की स्थिति पर निर्भर करता है

11

12 विलोपन या निष्कासन ओ (एन) समय लेता है 12
ओ (1) समय लेता है 12 ओ (एन) समय लेता है 13
कब का उपयोग करें? जब बहुत से मिलते हैं या सर्च ऑपरेशन शामिल होते हैं; स्मृति उपलब्धता शुरू होने पर भी अधिक होनी चाहिए जब बहुत सारे सम्मिलित या हटाए गए ऑपरेशन होते हैं, और स्मृति उपलब्धता को निरंतर होने की आवश्यकता नहीं होती है