introduction data structures c
C ++ में डेटा संरचनाओं पर एक परिचयात्मक ट्यूटोरियल।
“डेटा संरचना को डेटा के एक संगठित संग्रह के रूप में परिभाषित किया जा सकता है जो प्रोग्राम को कुशलतापूर्वक और तेज़ी से डेटा तक पहुंचने में मदद करता है ताकि पूरा कार्यक्रम एक कुशल तरीके से कार्य कर सके। “
हम जानते हैं कि प्रोग्रामिंग की दुनिया में, डेटा केंद्र है और सब कुछ डेटा के आसपास घूमता है। हमें सभी डेटा ऑपरेशनों को करने की आवश्यकता है, जिसमें स्टोर करना, खोजना, सॉर्ट करना, व्यवस्थित करना और डेटा को कुशलता से एक्सेस करना शामिल है और तभी हमारा प्रोग्राम सफल हो सकता है।
=> पूर्ण सी ++ ट्यूटोरियल सूची देखने के लिए यहां देखें।
आप क्या सीखेंगे:
- अवलोकन
- प्रोग्रामिंग में डेटा संरचना की आवश्यकता
- डेटा संरचना वर्गीकरण
- डेटा संरचना पर संचालन
- डेटा संरचना के लाभ
- निष्कर्ष
- अनुशंसित पाठ
अवलोकन
हमें डेटा संग्रहीत करने का सबसे कुशल तरीका खोजने की आवश्यकता है जो हमें गतिशील समाधान बनाने में मदद कर सकता है। डेटा संरचना ऐसे समाधानों के निर्माण में हमारी मदद करती है।
संरचनाओं में डेटा को व्यवस्थित या व्यवस्थित करते समय, हमें यह सुनिश्चित करने की आवश्यकता है कि व्यवस्था लगभग वास्तविक दुनिया की वस्तु का प्रतिनिधित्व करती है। दूसरे, यह व्यवस्था इतनी सरल होनी चाहिए कि कोई भी इसे आसानी से एक्सेस कर सके और जब भी आवश्यकता हो इसे प्रोसेस कर सके।
इस श्रृंखला में, हम बुनियादी के साथ-साथ एक उन्नत डेटा संरचना के बारे में विस्तार से जानेंगे। हम विभिन्न खोज और छंटाई तकनीकों के बारे में भी विस्तार से जानेंगे जो डेटा संरचनाओं पर किया जा सकता है।
इस ट्यूटोरियल श्रृंखला को सीखने के बाद, पाठक को प्रत्येक डेटा संरचना और इसकी प्रोग्रामिंग से अच्छी तरह परिचित होना चाहिए।
डेटा संरचनाओं से निपटने के दौरान हम कुछ ऐसे शब्दों से गुजरते हैं, जिनका हम उपयोग करते हैं:
उदाहरण के लिए,एक विशेष छात्र ले लो। एक छात्र में निम्नलिखित विवरण हो सकते हैं जैसा कि सचित्र रूप से दर्शाया गया है।
- डेटा: यह प्राथमिक मूल्य है। उपरोक्त आंकड़े में, छात्र रोल नंबर डेटा हो सकता है।
- समूह आइटम: यह डेटा आइटम है जिसमें एक से अधिक उप-आइटम हैं। उपरोक्त आकृति में, छात्र_नाम में पहला नाम और अंतिम नाम है।
- रिकॉर्ड: यह डेटा आइटम्स का एक संग्रह है। उपरोक्त उदाहरण में, छात्र रोल नंबर, नाम, वर्ग, आयु, ग्रेड, आदि जैसे डेटा आइटम एक साथ एक रिकॉर्ड बनाते हैं।
- इकाई: यह अभिलेखों का एक वर्ग है। उपरोक्त आरेख में, छात्र एक इकाई है।
- विशेषता या क्षेत्र: एक इकाई के गुणों को गुण कहा जाता है और प्रत्येक क्षेत्र एक विशेषता का प्रतिनिधित्व करता है।
- फ़ाइल: एक फ़ाइल रिकॉर्ड का एक संग्रह है। उपरोक्त उदाहरण में, एक छात्र इकाई में हजारों रिकॉर्ड हो सकते हैं। इस प्रकार एक फाइल में ये सभी रिकॉर्ड होंगे।
पाठक को इन सभी शर्तों के बारे में पता होना चाहिए क्योंकि हम विभिन्न डेटा संरचनाओं का उपयोग करते समय हर बार उनका उपयोग करते हैं।
डेटा संरचनाएं प्रोग्राम का मुख्य बिल्डिंग ब्लॉक हैं और प्रोग्रामर के रूप में, हमें इस बारे में सावधान रहना चाहिए कि कौन सी डेटा संरचना का उपयोग करना है। जहाँ तक प्रोग्रामिंग का सवाल है, सटीक डेटा संरचना का उपयोग करना सबसे कठिन निर्णय है।
आइए हम प्रोग्रामिंग में डेटा संरचना की आवश्यकता पर चर्चा करते हैं।
प्रोग्रामिंग में डेटा संरचना की आवश्यकता
जैसे-जैसे डेटा की मात्रा बढ़ती रहती है, एप्लिकेशन अधिक से अधिक जटिल होते जाते हैं, इसलिए प्रोग्रामर के लिए इस डेटा के साथ-साथ सॉफ़्टवेयर को प्रबंधित करना मुश्किल हो जाता है।
आमतौर पर, किसी भी समय, एप्लिकेशन को निम्नलिखित बाधाओं का सामना करना पड़ सकता है:
# 1) बड़ी मात्रा में डेटा खोजना: किसी भी समय संसाधित और संग्रहीत किए जाने वाले डेटा की एक बड़ी मात्रा के साथ, किसी विशेष डेटा को खोजने के लिए हमारे कार्यक्रम की आवश्यकता हो सकती है। यदि डेटा बहुत बड़ा है और ठीक से व्यवस्थित नहीं है, तो आवश्यक डेटा प्राप्त करने में बहुत समय लगेगा।
जब हम डेटा को संग्रहीत और व्यवस्थित करने के लिए डेटा संरचनाओं का उपयोग करते हैं, तो डेटा की पुनर्प्राप्ति तेज और आसान हो जाती है।
# 2) प्रसंस्करण की गति: अव्यवस्थित डेटा के कारण धीमी प्रसंस्करण गति हो सकती है क्योंकि डेटा पुनर्प्राप्त करने और एक्सेस करने में बहुत समय बर्बाद हो जाएगा।
यदि हम स्टोर करते समय डेटा संरचना में ठीक से व्यवस्थित करते हैं, तो हम हर बार इसे पुनः प्राप्त करने, व्यवस्थित करने जैसी गतिविधियों में समय बर्बाद नहीं करेंगे। इसके बजाय, हम वांछित आउटपुट का उत्पादन करने के लिए डेटा के प्रसंस्करण पर ध्यान केंद्रित कर सकते हैं।
# 3) एक साथ कई अनुरोध: इन दिनों कई अनुप्रयोगों को डेटा के लिए एक साथ अनुरोध करने की आवश्यकता होती है। अनुप्रयोगों को सुचारू रूप से चलाने के लिए इन अनुरोधों को कुशलतापूर्वक संसाधित किया जाना चाहिए।
यदि हमारा डेटा केवल यादृच्छिक रूप से संग्रहीत किया जाता है, तो हम सभी समवर्ती अनुरोधों को एक साथ संसाधित करने में सक्षम नहीं होंगे। तो यह एक उचित डेटा संरचना में डेटा की व्यवस्था करने का एक समझदारी भरा निर्णय है ताकि समवर्ती अनुरोधों को कम करने के समय को कम किया जा सके।
डेटा संरचना वर्गीकरण
C ++ में उपयोग की जाने वाली डेटा संरचनाओं को निम्नानुसार वर्गीकृत किया जा सकता है।
डेटा संरचना डेटा को व्यवस्थित करने का एक तरीका है। इसलिए हम डेटा संरचनाओं को आदिम या मानक डेटा संरचनाओं और गैर-आदिम या उपयोगकर्ता-परिभाषित डेटा संरचनाओं में दिखाया गया है।
हमने C ++ में समर्थित सभी डेटा प्रकार देखे हैं। जैसा कि यह डेटा को व्यवस्थित करने का एक तरीका भी है, हम कहते हैं कि यह एक मानक डेटा संरचना है।
अन्य डेटा संरचनाएं गैर-आदिम हैं और उपयोगकर्ता को किसी प्रोग्राम में उपयोग करने से पहले उन्हें परिभाषित करना है। इन उपयोगकर्ता-परिभाषित डेटा संरचनाओं को आगे रैखिक और गैर-रैखिक डेटा संरचनाओं में वर्गीकृत किया गया है।
रैखिक डेटा संरचना
रैखिक डेटा संरचनाओं में उनके सभी तत्व एक रैखिक या अनुक्रमिक फैशन में व्यवस्थित होते हैं। रेखीय डेटा संरचना के प्रत्येक तत्व में एक पूर्ववर्ती (पिछला तत्व) और एक उत्तराधिकारी (अगला तत्व) होता है
रैखिक डेटा संरचनाओं को स्थिर और गतिशील डेटा संरचनाओं में विभाजित किया गया है। स्थैतिक डेटा संरचनाओं का आमतौर पर एक निश्चित आकार होता है और एक बार उनका आकार संकलित समय पर घोषित होने के बाद इसे बदला नहीं जा सकता है। गतिशील डेटा संरचनाएं अपने आकार को गतिशील रूप से बदल सकती हैं और खुद को समायोजित कर सकती हैं।
रैखिक स्थैतिक डेटा संरचना का सबसे लोकप्रिय उदाहरण एक सरणी है।
सरणी
एक सरणी एक ही प्रकार के तत्वों का एक अनुक्रमिक संग्रह है। सरणी के प्रत्येक तत्व को सरणी में अपनी स्थिति का उपयोग करके एक्सेस किया जा सकता है जिसे सरणी का सूचकांक या सबस्क्रिप्ट कहा जाता है। सरणी का नाम सरणी में पहले तत्व को इंगित करता है।
ऊपर दिखाया गया है n तत्वों का एक सरणी array a ’। तत्व 0 से n-1 तक गिने जाते हैं। सरणी का आकार (इस मामले में n) को सरणी का आयाम भी कहा जाता है। जैसा कि उपरोक्त आंकड़े में दिखाया गया है, सरणी का नाम सरणी के पहले तत्व को इंगित करता है।
सरणी सबसे सरल डेटा संरचना है और कुशल है क्योंकि तत्वों को सीधे सदस्यता का उपयोग करके एक्सेस किया जा सकता है। अगर हम एरे में तीसरे तत्व को एक्सेस करना चाहते हैं तो हमें बस एक (२) कहना होगा।
लेकिन सरणी तत्वों को जोड़ना या हटाना मुश्किल है। इसलिए हम केवल सरल अनुप्रयोगों में या उन अनुप्रयोगों में सरणियों का उपयोग करते हैं जहां तत्वों को जोड़ना / हटाना आवश्यक नहीं है।
लोकप्रिय रैखिक गतिशील डेटा संरचनाएं सूची, स्टैक और कतार से जुड़ी हुई हैं।
लिंक्ड सूची
एक लिंक की गई सूची नोड्स का एक संग्रह है। प्रत्येक नोड में डेटा तत्व और अगले नोड के लिए एक पॉइंटर होता है। नोड्स को गतिशील रूप से जोड़ा और हटाया जा सकता है। एक लिंक की गई सूची एक एकल लिंक की गई सूची हो सकती है, जिसमें प्रत्येक नोड में केवल अगले तत्व के लिए एक संकेतक होता है। अंतिम तत्व के लिए, अगला सूचक शून्य पर सेट है।
दोगुनी लिंक की गई सूची में, प्रत्येक नोड में दो बिंदु होते हैं एक पिछले नोड के लिए और दूसरा अगले नोड के लिए। पहले नोड के लिए, पिछला पॉइंटर शून्य है और अंतिम नोड के लिए, अगला पॉइंटर शून्य है।
जैसा कि ऊपर की आकृति में दिखाया गया है, सूची की शुरुआत को सिर कहा जाता है जबकि लिंक की गई सूची के अंत को पूंछ कहा जाता है। जैसा कि ऊपर दिखाया गया है, प्रत्येक नोड में अगले तत्व के लिए एक संकेतक है। हम पॉइंटर को अगले नोड में बदलकर आसानी से तत्वों को जोड़ या हटा सकते हैं।
ढेर
स्टैक एक रैखिक डेटा संरचना है जिसमें तत्वों को केवल एक छोर से जोड़ा या हटाया जा सकता है, जिसे स्टैक के 'शीर्ष' के रूप में जाना जाता है। इस तरह, स्टैक LIFO (लास्ट इन, फर्स्ट आउट) मेमोरी एक्सेस का प्रकार प्रदर्शित करता है।
जैसा कि ऊपर दिखाया गया है, स्टैक में तत्वों को हमेशा एक छोर पर जोड़ा जाता है और उसी छोर से हटा दिया जाता है। इसे स्टैक का 'टॉप' कहा जाता है। जब एक तत्व जोड़ा जाता है, तो इसे स्टैक के नीचे धकेल दिया जाता है और स्टैक के शीर्ष को एक स्थिति द्वारा बढ़ाया जाता है।
इसी तरह, जब एक तत्व को हटा दिया जाता है, तो स्टैक के शीर्ष को हटा दिया जाता है। जब एक स्टैक खाली होता है, तो स्टैक का शीर्ष -1 पर सेट होता है। दो मुख्य ऑपरेशन 'पुश' और 'पॉप' हैं जो स्टैक पर किए जाते हैं।
पंक्ति
कतार अभी तक एक और रैखिक डेटा संरचना है जिसमें तत्वों को 'पीछे' नामक एक छोर पर जोड़ा जाता है और 'सामने' नामक दूसरे छोर से हटा दिया जाता है। कतार FIFO (प्रथम इन, फ़र्स्ट आउट) मेमोरी एक्सेस पद्धति का प्रकार प्रदर्शित करती है।
उपरोक्त आरेख पीछे और सामने के छोर के साथ एक कतार दिखाता है। जब कतार खाली होती है, तो पीछे और सामने वाले बिंदु एक दूसरे के साथ मेल खाते हैं।
गैर-रेखीय डेटा संरचना
गैर-रैखिक डेटा संरचनाओं में, डेटा क्रमिक रूप से व्यवस्थित नहीं किया जाता है, इसके बजाय, यह एक गैर-रैखिक फैशन में व्यवस्थित होता है। गैर-रैखिक व्यवस्था में तत्व एक दूसरे से जुड़े होते हैं।
गैर-रैखिक डेटा संरचनाएं ट्रीज़ और ग्राफ़ हैं।
सबसे अच्छा आवाज मान्यता सॉफ्टवेयर क्या है
पेड़
पेड़ गैर-रैखिक बहुस्तरीय डेटा संरचनाएं हैं जो तत्वों के बीच एक पदानुक्रमित संबंध हैं। पेड़ के तत्वों को नोड्स कहा जाता है।
शीर्ष पर स्थित नोड को पेड़ की जड़ कहा जाता है। मूल में एक या अधिक बच्चे नोड हो सकते हैं। बाद के नोड्स में एक या अधिक बच्चे नोड्स भी हो सकते हैं। जिन नोड्स में चाइल्ड नोड्स नहीं होते हैं, उन्हें लीफ नोड्स कहा जाता है।
उपरोक्त आरेख में, हमने 6 नोड्स के साथ एक पेड़ दिखाया है। इन तीन नोड्स में से पत्ती नोड्स हैं, एक सबसे ऊपरी नोड रूट है और अन्य चाइल्ड नोड्स हैं। नोड्स, चाइल्ड नोड्स आदि की संख्या या नोड्स के बीच संबंध के आधार पर, हमारे पास विभिन्न प्रकार के पेड़ हैं।
रेखांकन
ग्राफ नोड्स का एक सेट है जिसे कहा जाता है कोने लिंक के माध्यम से एक दूसरे से जुड़े किनारों । रेखांकन के अंदर एक चक्र हो सकता है यानी एक ही शीर्ष बिंदु एक प्रारंभिक बिंदु और साथ ही एक विशेष पथ का अंत बिंदु हो सकता है। वृक्षों का चक्र कभी नहीं हो सकता।
उपरोक्त आरेख एक अप्रत्यक्ष ग्राफ है। हम निर्देशित ग्राफ़ भी रख सकते हैं जहाँ हम निर्देशित तीरों का उपयोग करके किनारों का प्रतिनिधित्व करते हैं।
डेटा संरचना पर संचालन
सभी डेटा संरचनाएं अपने तत्वों पर विभिन्न ऑपरेशन करती हैं।
ये सभी डेटा संरचनाओं के लिए सामान्य हैं और निम्नानुसार सूचीबद्ध हैं:
- खोज कर: यह ऑपरेशन किसी विशेष तत्व या कुंजी को खोजने के लिए किया जाता है। सबसे आम खोज एल्गोरिदम अनुक्रमिक / रैखिक खोज और बाइनरी खोज हैं।
- छँटाई: सॉर्टिंग ऑपरेशन में किसी विशेष क्रम में तत्वों को एक विशेष क्रम में आरोही या अवरोही में व्यवस्थित करना शामिल है। विभिन्न सॉर्टिंग एल्गोरिदम हैं जो डेटा संरचनाओं के लिए उपलब्ध हैं। उनमें से सबसे लोकप्रिय हैं क्विकसॉर्ट, चयन सॉर्ट, मर्ज सॉर्ट, आदि।
- प्रविष्टि: सम्मिलन ऑपरेशन डेटा संरचना में एक तत्व जोड़ने के साथ संबंधित है। यह सबसे महत्वपूर्ण ऑपरेशन है और एक तत्व के अतिरिक्त के परिणामस्वरूप, व्यवस्था बदल जाती है और हमें यह ध्यान रखने की आवश्यकता है कि डेटा संरचना बरकरार रहे।
- विलोपन: डिलीटेशन ऑपरेशन डेटा संरचना से एक तत्व को निकालता है। सम्मिलन के लिए जिन शर्तों पर विचार किया जाना है, वही शर्तों को हटाने के संचालन के साथ ही पूरा किया जाना है।
- ट्रैवर्सिंग: हम कहते हैं कि जब हम संरचना में प्रत्येक तत्व का दौरा करते हैं तो हम एक डेटा संरचना का पता लगाते हैं। डेटा संरचना पर कुछ विशिष्ट संचालन करने के लिए ट्रैवर्सिंग की आवश्यकता होती है।
अपने बाद के विषयों में, हम पहले डेटा संरचनाओं पर प्रदर्शन की जाने वाली विभिन्न खोज और छँटाई तकनीक सीखेंगे।
डेटा संरचना के लाभ
- अमूर्त: डेटा संरचनाओं को अक्सर अमूर्त डेटा प्रकारों के रूप में लागू किया जाता है। उपयोगकर्ता अंतर्निहित कार्यान्वयन के बारे में चिंता किए बिना केवल इसके बाहरी इंटरफ़ेस तक पहुंचते हैं। इस प्रकार डेटा संरचना अमूर्तता की एक परत प्रदान करती है।
- दक्षता: डेटा के उचित उपयोग से डेटा का उचित संगठन होता है जिससे कार्यक्रम अधिक कुशल बनते हैं। दूसरे, हम अपनी आवश्यकताओं के आधार पर उचित डेटा संरचना का चयन कर सकते हैं।
- पुन: प्रयोज्यता: हम उन डेटा संरचनाओं का पुन: उपयोग कर सकते हैं जिन्हें हमने डिज़ाइन किया है। उन्हें एक पुस्तकालय में भी संकलित किया जा सकता है और ग्राहक को वितरित किया जा सकता है।
निष्कर्ष
इसके साथ, हम इस ट्यूटोरियल को डेटा संरचनाओं के परिचय पर समाप्त करते हैं। हमने इस ट्यूटोरियल में संक्षिप्त में से प्रत्येक डेटा संरचना को पेश किया है।
हमारे बाद के ट्यूटोरियल में, हम विभिन्न खोज और छंटाई तकनीकों के साथ डेटा संरचनाओं के बारे में और अधिक जानकारी प्राप्त करेंगे।
=> निरपेक्ष सी ++ प्रशिक्षण श्रृंखला के लिए यहां क्लिक करें।
अनुशंसित पाठ
- C ++ डेटा प्रकार
- कतार डेटा संरचना चित्रण के साथ C ++ में
- टॉप 20 डेटा साइंस टूल्स 2021 में प्रोग्रामिंग को खत्म करना
- JMeter डेटा परिशोधन उपयोगकर्ता परिभाषित चर का उपयोग कर
- डेटा इकट्ठा करने की रणनीतियों के साथ 10+ सर्वश्रेष्ठ डेटा संग्रह उपकरण
- 2021 में अपने डेटा की आवश्यकता को पूरा करने के लिए 10+ सर्वश्रेष्ठ डेटा शासन उपकरण
- टेस्ट डेटा प्रबंधन के लिए आईबीएम तर्कसंगत गुणवत्ता प्रबंधक में डेटा पूल फ़ीचर
- चित्रण के साथ C ++ में स्टैक डेटा संरचना