सार डेटा प्रकार: ADT को डेटा मानों और संबंधित परिचालनों के एक समूह के रूप में परिभाषित किया जा सकता है जो किसी विशेष कार्यान्वयन से स्वतंत्र रूप से निर्दिष्ट हैं। इस प्रकार एक सार डेटा प्रकार जानकारी का एक संगठित संग्रह है और उस जानकारी को प्रबंधित करने के लिए उपयोग किए जाने वाले संचालन का एक सेट है। संचालन का सेट ADT के इंटरफ़ेस को परिभाषित करता है। जब तक एडीटी इंटरफ़ेस की शर्तों को पूरा करता है, यह वास्तव में कोई फर्क नहीं पड़ता कि एडीटी कैसे लागू किया जाता है। चूंकि, ADT में, डेटा मान और संचालन को गणितीय सटीकता के साथ परिभाषित किया जाता है, बल्कि एक कंप्यूटर भाषा में कार्यान्वयन के रूप में, हम संचालन के प्रभाव, अन्य अमूर्त डेटा के संबंध के बारे में कारण हो सकते हैं कि क्या कोई प्रोग्राम डेटा प्रकार को लागू करता है आदि।
अमूर्त डेटा प्रकार (ADT) और कंक्रीट डेटा प्रकार के बीच मूल अंतर यह है कि उत्तरार्द्ध हमें ठोस प्रतिनिधित्व को देखने की अनुमति देता है, जबकि पूर्व हमसे प्रतिनिधित्व को छिपाता है। एक ADT शुद्ध ADT या अद्यतन करने योग्य ADT हो सकता है। एक शुद्ध एडीटी वह है जहां सभी ऑपरेशन शुद्ध कार्य हैं। इसका मतलब है कि ऑपरेशन का कोई दुष्प्रभाव नहीं है। विशेष रूप से, वे इनपुट तर्कों को संशोधित या अपडेट नहीं करते हैं। वे इन तर्कों का उपयोग आउटपुट उत्पन्न करने के लिए करते हैं, जो एडीटी (या अन्य प्रकार के) के नए मूल्य हैं। अधिकांश ठोस प्रकार शुद्ध होते हैं। उदाहरण के लिए, पूर्णांक पर कोई भी ऑपरेशन वास्तव में पूर्णांक को संशोधित नहीं करता है। इसके बजाय, '+' जैसे सभी ऑपरेशन नए आउटपुट उत्पन्न करते हैं।
एक अद्यतन योग्य ADT वह है जहाँ कुछ ऑपरेशन वास्तव में ADT के मान को बदलते हैं। उदाहरण के लिए, मान लीजिए कि हमारे पास 'पॉप' नामक एक ऑपरेशन था जिसने एक तर्क के रूप में एक स्टैक लिया और इसे संशोधित किया। ("जगह में", "विनाशकारी") सर्वोच्च प्राथमिकता आइटम को हटाकर। इस ऑपरेशन को अशुद्ध माना जाएगा और पूरे एडीटी को भी अशुद्ध किया जाएगा। एक ADT उपयोगकर्ता परिभाषित ADT हो सकता है।
हम जानते हैं कि एक सार डेटा प्रकार एक डेटा प्रकार है जो निम्नलिखित दो स्थितियों को संतुष्ट करता है:
प्रकार और परिचालनों का प्रतिनिधित्व, या परिभाषा, एकल संक्रियात्मक इकाई में निहित है।
प्रकार की वस्तुओं का प्रतिनिधित्व प्रोग्राम इकाइयों से छिपा होता है जो प्रकार का उपयोग करते हैं, इसलिए उन वस्तुओं पर केवल प्रत्यक्ष संचालन संभव है जो कि प्रकार की परिभाषा में प्रदान किए गए हैं।
एक उपयोगकर्ता परिभाषित सार डेटा प्रकार प्रदान करना चाहिए:
एक प्रकार की परिभाषा जो प्रोग्राम इकाइयों को प्रकार के चर घोषित करने की अनुमति देती है, लेकिन इन चर के प्रतिनिधित्व को छुपाती है।
प्रकार की वस्तुओं में हेरफेर करने के लिए संचालन का एक सेट।
एक उपयोगकर्ता परिभाषित अमूर्त डेटा प्रकार का एक उदाहरण संरचना है। 'सी' चार बुनियादी प्रकार प्रदान करता है: इंट, चार, फ्लोट और डबल। हालाँकि, 'C' प्रोग्रामर को अपने स्वयं के प्रकारों को परिभाषित करने की क्षमता भी प्रदान करता है। संरचना एक ऐसा उदाहरण है। एक संरचना विभिन्न भागों का एक समुच्चय है, जहाँ प्रत्येक भाग कुछ मौजूदा प्रकार का होता है।
struct abc
{int x;
float y;
};
उपरोक्त संरचना की परिभाषा कोई चर नहीं बनाती है, बल्कि यह एक नया प्रकार बनाती है। इस प्रकार के वेरिएबल्स एक प्रकार से निर्मित चर के समान तरीके से बनाए जा सकते हैं।
struct abc a;
टाइप किए गए कीवर्ड हमें अपने नए प्रकारों के लिए नए प्रकार के नाम बनाने की अनुमति देते हैं।
उदाहरण के लिए:
typedef struct abc AB;
जहाँ AB एक नए प्रकार का नाम है जिसका उपयोग अब नए प्रकार बनाने के लिए किया जा सकता है।
AB b;
डेटा संरचनाएं: निम्नलिखित डेटा संरचनाओं की विशिष्ट विशेषताएं हैं:
इसमें घटक डेटा आइटम शामिल हैं, जो परमाणु या अन्य डेटा संरचना (अभी भी एक डोमेन) हो सकता है।
एक या एक से अधिक घटक वस्तुओं पर संचालन का एक सेट।
नियमों को परिभाषित करता है कि कैसे घटक एक दूसरे से और एक पूरे के रूप में संरचना से संबंधित हैं (अभिकथन)।
डेटा संरचनाएं:
डेटा संरचना स्थिर या गतिशील हो सकती है। स्थिर डेटा संरचना का एक निश्चित आकार होता है। यह अर्थ स्थिर संशोधक के अर्थ से अलग है। ऐरे स्थिर हैं; एक बार जब हम इसे धारण कर सकते हैं तत्वों की संख्या को परिभाषित करते हैं, संख्या नहीं बदलती है। एक गतिशील डेटा संरचना अपनी सामग्री द्वारा आवश्यकतानुसार निष्पादन समय पर बढ़ती और सिकुड़ती है। लिंक्स का उपयोग करके एक गतिशील डेटा संरचना लागू की जाती है।
डेटा संरचनाओं को आगे रैखिक डेटा संरचनाओं और गैर-रैखिक डेटा संरचनाओं में वर्गीकृत किया जा सकता है। रेखीय डेटा संरचनाओं में हर घटक में पहले और अंतिम तत्वों को छोड़कर एक अद्वितीय पूर्ववर्ती और उत्तराधिकारी होता है, जबकि गैर-रैखिक डेटा संरचनाओं के मामले में, ऐसा कोई प्रतिबंध नहीं है क्योंकि तत्वों को किसी भी वांछित फैशन में व्यवस्थित किया जा सकता है जिस तरह से हम उपयोग करते हैं। ऐसे प्रकारों का प्रतिनिधित्व करते हैं।