सार डेटा प्रकार और डेटा संरचना


32

इन शब्दों को समझना मेरे लिए काफी मुश्किल है। मैंने Google पर खोज की और विकिपीडिया पर थोड़ा पढ़ा लेकिन मुझे अभी भी यकीन नहीं है। मैंने अब तक निर्धारित किया है कि:

सार डेटा प्रकार नए प्रकार की एक परिभाषा है, इसके गुणों और संचालन का वर्णन करता है।

डेटा संरचना ADT का एक कार्यान्वयन है। कई एडीटी को समान डेटा संरचना के रूप में लागू किया जा सकता है।

अगर मुझे सही लगता है, तो ADT के रूप में सरणी का अर्थ है तत्वों का एक संग्रह और डेटा संरचना के रूप में, यह एक मेमोरी में कैसे संग्रहीत किया जाता है। स्टैक धक्का, पॉप संचालन के साथ एडीटी है, लेकिन क्या हम स्टैक डेटा संरचना के बारे में कह सकते हैं यदि मेरा मतलब है कि मैंने अपने एल्गोरिथ्म में एक सरणी के रूप में लागू स्टैक का उपयोग किया है? और क्यों ढेर ADT नहीं है? इसे पेड़ या एक सरणी के रूप में लागू किया जा सकता है।



4
संबं धत
ल ं क

जवाबों:


24

सीधे शब्दों में कहें, एक ADT (अमूर्त डेटा प्रकार) एक तार्किक विवरण का अधिक है, जबकि एक डेटा संरचना ठोस है।

डेटा की एक तस्वीर और इसे हेरफेर करने और बदलने के लिए संचालन के रूप में एक एडीटी के बारे में सोचो।

एक डेटा संरचना वास्तविक, ठोस चीज है । इसे एक एल्गोरिथ्म के भीतर लागू और उपयोग किया जा सकता है।


लेकिन मैं एक एल्गोरिथ्म के अंदर एक स्टैक और क्यू भी लागू कर सकता हूं (जो कि ADT हैं)। नहीं?
FedericoCapaldo

स्टैक और क्यू विशिष्ट कंप्यूटर विज्ञान अर्थों के साथ तार्किक अभ्यावेदन हैं। हालाँकि, C #, Java, Go, या [अपनी भाषा का नाम] में एक कतार का कार्यान्वयन थोड़ा अलग होने वाला है। कतार अवधारणा ADT है, जावा कतार एक डेटा संरचना है। सी # स्टैक कार्यान्वयन के साथ ही।
बेरिन लोरिट्श

53

ADT एक इंटरफ़ेस के लिए है ( यह क्या करता है ) एक डेटा संरचना एक वर्ग के लिए है ( यह कैसे करता है )।

कुछ उदाहरण:

ADT: List
DS:  ArrayList, LinkedList...

ADT: Map
DS:  HashMap, TreeMap...

मुझे लगता है कि आपको बात मिल जाएगी।


ADT को डेटा संरचना का सामान्य प्रकार कहा जा सकता है?
ओवैस कुरैशी

1
यह चिह्नित उत्तर होना चाहिए। यह आम आदमी के लिए अधिक सरल नहीं कहा जा सकता था।
डेपफैक्स

सरल और प्रभावी उत्तर के लिए @dagnelies धन्यवाद। इसे उत्तर के रूप में चिह्नित किया जाना चाहिए।
सरुन यूके

1
यकीन नहीं होता, लेकिन मैं यहां शब्दांकन में एक छोटी सी पुन: व्यवस्था पसंद करता हूं ADT is to a Data Structure, what an Interface (what it does) is to a Class (how it does it):। उदाहरण हाजिर हैं।
आदित्य एमपी

10

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

अमूर्त डेटा प्रकार (ADT) और कंक्रीट डेटा प्रकार के बीच मूल अंतर यह है कि उत्तरार्द्ध हमें ठोस प्रतिनिधित्व को देखने की अनुमति देता है, जबकि पूर्व हमसे प्रतिनिधित्व को छिपाता है। एक ADT शुद्ध ADT या अद्यतन करने योग्य ADT हो सकता है। एक शुद्ध एडीटी वह है जहां सभी ऑपरेशन शुद्ध कार्य हैं। इसका मतलब है कि ऑपरेशन का कोई दुष्प्रभाव नहीं है। विशेष रूप से, वे इनपुट तर्कों को संशोधित या अपडेट नहीं करते हैं। वे इन तर्कों का उपयोग आउटपुट उत्पन्न करने के लिए करते हैं, जो एडीटी (या अन्य प्रकार के) के नए मूल्य हैं। अधिकांश ठोस प्रकार शुद्ध होते हैं। उदाहरण के लिए, पूर्णांक पर कोई भी ऑपरेशन वास्तव में पूर्णांक को संशोधित नहीं करता है। इसके बजाय, '+' जैसे सभी ऑपरेशन नए आउटपुट उत्पन्न करते हैं।

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

हम जानते हैं कि एक सार डेटा प्रकार एक डेटा प्रकार है जो निम्नलिखित दो स्थितियों को संतुष्ट करता है:

  1. प्रकार और परिचालनों का प्रतिनिधित्व, या परिभाषा, एकल संक्रियात्मक इकाई में निहित है।

  2. प्रकार की वस्तुओं का प्रतिनिधित्व प्रोग्राम इकाइयों से छिपा होता है जो प्रकार का उपयोग करते हैं, इसलिए उन वस्तुओं पर केवल प्रत्यक्ष संचालन संभव है जो कि प्रकार की परिभाषा में प्रदान किए गए हैं।

एक उपयोगकर्ता परिभाषित सार डेटा प्रकार प्रदान करना चाहिए:

  1. एक प्रकार की परिभाषा जो प्रोग्राम इकाइयों को प्रकार के चर घोषित करने की अनुमति देती है, लेकिन इन चर के प्रतिनिधित्व को छुपाती है।

  2. प्रकार की वस्तुओं में हेरफेर करने के लिए संचालन का एक सेट।

एक उपयोगकर्ता परिभाषित अमूर्त डेटा प्रकार का एक उदाहरण संरचना है। 'सी' चार बुनियादी प्रकार प्रदान करता है: इंट, चार, फ्लोट और डबल। हालाँकि, 'C' प्रोग्रामर को अपने स्वयं के प्रकारों को परिभाषित करने की क्षमता भी प्रदान करता है। संरचना एक ऐसा उदाहरण है। एक संरचना विभिन्न भागों का एक समुच्चय है, जहाँ प्रत्येक भाग कुछ मौजूदा प्रकार का होता है।

struct abc

{int x;

float y;

};

उपरोक्त संरचना की परिभाषा कोई चर नहीं बनाती है, बल्कि यह एक नया प्रकार बनाती है। इस प्रकार के वेरिएबल्स एक प्रकार से निर्मित चर के समान तरीके से बनाए जा सकते हैं।

struct abc a;

टाइप किए गए कीवर्ड हमें अपने नए प्रकारों के लिए नए प्रकार के नाम बनाने की अनुमति देते हैं।

उदाहरण के लिए:

typedef struct abc AB;

जहाँ AB एक नए प्रकार का नाम है जिसका उपयोग अब नए प्रकार बनाने के लिए किया जा सकता है।

AB b;

डेटा संरचनाएं: निम्नलिखित डेटा संरचनाओं की विशिष्ट विशेषताएं हैं:

  1. इसमें घटक डेटा आइटम शामिल हैं, जो परमाणु या अन्य डेटा संरचना (अभी भी एक डोमेन) हो सकता है।

  2. एक या एक से अधिक घटक वस्तुओं पर संचालन का एक सेट।

  3. नियमों को परिभाषित करता है कि कैसे घटक एक दूसरे से और एक पूरे के रूप में संरचना से संबंधित हैं (अभिकथन)।

डेटा संरचनाएं:

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

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


0

सबसे पहले, डेटा संरचनाओं में शब्दावली बहुत भ्रामक हो सकती है।

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

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

मुझे लगता है कि वास्तविक भ्रम तब पैदा होता है जब कोई अपने डीएस को एडीटी के रूप में नाम देता है, उदाहरण के लिए कुछ लोग अपने पूर्ववर्ती डीएस को डिक्टिम कार्यान्वयन के बजाय 'डिक्शनरी' के रूप में कहेंगे जो पूरी तरह से कानूनी है, यह सिर्फ कुछ भ्रम का कारण बनता है।

रेफरी: स्कीना: एल्गोरिथम डिजाइन मैनुअल

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.