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

Anonim

सारणी बनाम लिंक्ड सूचियों

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

आंकड़ा 1 में दिखाया गया, कोड का एक टुकड़ा आम तौर पर एक सरणी के लिए मूल्यों को घोषित करने और निर्दिष्ट करने के लिए उपयोग किया जाता है। चित्रा 2 में दर्शाया गया है कि स्मृति में कैसे एक सरणी दिखाई देगी

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

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

डेटा अगला

चित्रा 3: लिंक्ड सूची का तत्व

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

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