डेटा संरचना: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(11 intermediate revisions by 5 users not shown)
Line 3: Line 3:
{{distinguish|डेटा प्रकार}}
{{distinguish|डेटा प्रकार}}
{{For|विकिपीडिया की डेटा संरचना पर जानकारी|विकिपीडिया:प्रशासन#डेटा संरचना और विकास|selfref=yes|||}}
{{For|विकिपीडिया की डेटा संरचना पर जानकारी|विकिपीडिया:प्रशासन#डेटा संरचना और विकास|selfref=yes|||}}
[[Image:Hash table 3 1 1 0 1 0 0 SP.svg|thumb|315px|एक डेटा संरचना जिसे [[हैश तालिका]] के रूप में जाना जाता है।]][[कंप्यूटर विज्ञान]] में, एक डेटा संरचना एक डेटा संगठन, प्रबंधन और भंडारण प्रारूप है जिसे सामान्यतः दक्षता डेटा एक्सेस टू डेटा के लिए चुना [[जानकारी]] है।<ref name=":0">{{Cite book|url=https://dl.acm.org/citation.cfm?id=1614191|title=एल्गोरिदम का परिचय, तीसरा संस्करण|last=Cormen|first=Thomas H.|last2=Leiserson|first2=Charles E.|last3=Rivest|first3=Ronald L.|last4=Stein|first4=Clifford|date=2009|publisher=The MIT Press|isbn=978-0262033848|edition=3rd}}</ref><ref name=":1">{{cite book |last1=Black |first1=Paul E. |editor1-last=Pieterse |editor1-first=Vreda |editor2-last=Black |editor2-first=Paul E. |title=एल्गोरिदम और डेटा संरचनाओं का शब्दकोश [ऑनलाइन]|date=15 December 2004 |publisher=[[National Institute of Standards and Technology]] |chapter-url=https://xlinux.nist.gov/dads/HTML/datastructur.html |access-date=2018-11-06 |chapter=data structure}}</ref><ref name=":2">{{cite encyclopedia |encyclopedia=Encyclopaedia Britannica |title= डेटा संरचना|url=https://www.britannica.com/technology/data-structure |access-date=2018-11-06 |date=17 April 2017}}</ref> अधिक सटीक रूप से, डेटा संरचना डेटा मानों का एक संग्रह है, उनके बीच संबंध, और कार्य या संचालन जो डेटा पर प्रयुक्त किए जा सकते हैं,<ref name=":3">{{Cite book|url=http://dl.acm.org/citation.cfm?id=1074100.1074312|title=कंप्यूटर विज्ञान का विश्वकोश|last=Wegner|first=Peter|last2=Reilly|first2=Edwin D.|publisher=John Wiley and Sons |isbn=978-0470864128|location=Chichester, UK|pages=507–512|date=2003-08-29}}</ref> यानी, यह डेटा के बारे में एक [[बीजगणितीय संरचना]] है। '''[[कंप्यूटर विज्ञान]] में, एक डेटा संरचना एक डेटा संगठन, प्रबंधन और भंडारण प्रारूप है जिसे सामान्यतः दक्षता डेटा एक्सेस टू डेटा के लिए चुना [[जानकारी]] है।<ref name=":0" /><ref name=":1" /><ref name=":2" /> अधिक सटीक रूप से, डेटा संरचना डेटा मानों का एक संग्रह है, उनके बीच संबंध, और कार्य या संचालन जो डेटा पर प्रयुक्त किए जा सकते हैं,<ref name=":3" /> यानी, यह डेटा के बारे में एक [[बीजगणितीय संरचना]] है।'''
[[Image:Hash table 3 1 1 0 1 0 0 SP.svg|thumb|315px|डेटा संरचना जिसे [[हैश तालिका]] के रूप में जाना जाता है।]][[कंप्यूटर विज्ञान]] में, '''डेटा संरचना''' डेटा संगठन, प्रबंधन और भंडारण प्रारूप है जिसे सामान्यतः दक्षता डेटा एक्सेस टू डेटा के लिए चुना [[जानकारी|जाता]] है।<ref name=":0">{{Cite book|url=https://dl.acm.org/citation.cfm?id=1614191|title=एल्गोरिदम का परिचय, तीसरा संस्करण|last=Cormen|first=Thomas H.|last2=Leiserson|first2=Charles E.|last3=Rivest|first3=Ronald L.|last4=Stein|first4=Clifford|date=2009|publisher=The MIT Press|isbn=978-0262033848|edition=3rd}}</ref><ref name=":1">{{cite book |last1=Black |first1=Paul E. |editor1-last=Pieterse |editor1-first=Vreda |editor2-last=Black |editor2-first=Paul E. |title=एल्गोरिदम और डेटा संरचनाओं का शब्दकोश [ऑनलाइन]|date=15 December 2004 |publisher=[[National Institute of Standards and Technology]] |chapter-url=https://xlinux.nist.gov/dads/HTML/datastructur.html |access-date=2018-11-06 |chapter=data structure}}</ref><ref name=":2">{{cite encyclopedia |encyclopedia=Encyclopaedia Britannica |title= डेटा संरचना|url=https://www.britannica.com/technology/data-structure |access-date=2018-11-06 |date=17 April 2017}}</ref> अधिक सटीक रूप से, डेटा संरचना डेटा मानों का एक संग्रह है, उनके बीच संबंध, और कार्य या संचालन जो डेटा पर प्रयुक्त किए जा सकते हैं,<ref name=":3">{{Cite book|url=http://dl.acm.org/citation.cfm?id=1074100.1074312|title=कंप्यूटर विज्ञान का विश्वकोश|last=Wegner|first=Peter|last2=Reilly|first2=Edwin D.|publisher=John Wiley and Sons |isbn=978-0470864128|location=Chichester, UK|pages=507–512|date=2003-08-29}}</ref> यानी, यह डेटा के बारे में एक [[बीजगणितीय संरचना]] है। '''<ref name=":0" /><ref name=":1" /><ref name=":2" />'''  


== प्रयोग ==
== प्रयोग ==
Line 15: Line 15:


== कार्यान्वयन ==
== कार्यान्वयन ==
डेटा संरचनाएं सामान्यतः एक पॉइंटर ([[कंप्यूटर]] प्रोग्रामिंग) द्वारा निर्दिष्ट मेमोरी में किसी भी स्थान पर डेटा लाने और संग्रहीत करने के लिए कंप्यूटर की क्षमता पर आधारित होती हैं - एक [[अंश]] स्ट्रिंग (कंप्यूटर साइंस), एक [[स्मृति पता]] का प्रतिनिधित्व करती है, जिसे स्वयं संग्रहीत किया जा सकता है स्मृति में और कार्यक्रम द्वारा हेरफेर किया गया। इस प्रकार, ऐरे डेटा संरचना और [[रिकॉर्ड (कंप्यूटर विज्ञान)]] डेटा संरचनाएं अंकगणितीय संचालन के साथ डेटा आइटम के पतों की गणना पर आधारित होती हैं, जबकि [[लिंक्ड डेटा संरचना]]एं संरचना के अन्दर ही डेटा आइटम के पतों को संग्रहीत करने पर आधारित होती हैं।
डेटा संरचनाएं सामान्यतः पॉइंटर ([[कंप्यूटर]] प्रोग्रामिंग) द्वारा निर्दिष्ट मेमोरी में किसी भी स्थान पर डेटा लाने और संग्रहीत करने के लिए कंप्यूटर की क्षमता पर आधारित होती हैं - एक [[अंश]] स्ट्रिंग (कंप्यूटर साइंस), [[स्मृति पता]] का प्रतिनिधित्व करती है, जिसे स्वयं संग्रहीत किया जा सकता है स्मृति में और कार्यक्रम द्वारा हेरफेर किया गया। इस प्रकार, ऐरे डेटा संरचना और [[रिकॉर्ड (कंप्यूटर विज्ञान)]] डेटा संरचनाएं अंकगणितीय संचालन के साथ डेटा आइटम के पतों की गणना पर आधारित होती हैं, जबकि [[लिंक्ड डेटा संरचना]]एं संरचना के अन्दर ही डेटा आइटम के पतों को संग्रहीत करने पर आधारित होती हैं।


डेटा संरचना के कार्यान्वयन के लिए सामान्यतः उपनेमका का एक सेट लिखने की आवश्यकता होती है जो उस संरचना के उदाहरणों को बनाते और हेरफेर करते हैं। डेटा संरचना की दक्षता का उन कार्यों से अलग विश्लेषण नहीं किया जा सकता है। यह अवलोकन अमूर्त डेटा प्रकार की सैद्धांतिक अवधारणा को प्रेरित करता है, एक डेटा संरचना जो उस पर किए जा सकने वाले संचालन द्वारा अप्रत्यक्ष रूप से परिभाषित होती है, और उन कार्यों के गणितीय गुण (उनके स्थान और समय की लागत सहित)<ref>{{Cite book|title=उन्नत जैव प्रौद्योगिकी: जैव प्रौद्योगिकी और अन्य जैविक विज्ञान के बीएससी और एमएससी छात्रों के लिए।|last=Dubey, R. C.|date=2014|publisher=S Chand|isbn=978-81-219-4290-4|location=New Delhi|oclc=883695533}}</ref>
डेटा संरचना के कार्यान्वयन के लिए सामान्यतः उपनेमका का एक सेट लिखने की आवश्यकता होती है जो उस संरचना के उदाहरणों को बनाते और हेरफेर करते हैं। डेटा संरचना की दक्षता का उन कार्यों से अलग विश्लेषण नहीं किया जा सकता है। यह अवलोकन अमूर्त डेटा प्रकार की सैद्धांतिक अवधारणा को प्रेरित करता है, डेटा संरचना जो उस पर किए जा सकने वाले संचालन द्वारा अप्रत्यक्ष रूप से परिभाषित होती है, और उन कार्यों के गणितीय गुण (उनके स्थान और समय की लागत सहित) होते है।<ref>{{Cite book|title=उन्नत जैव प्रौद्योगिकी: जैव प्रौद्योगिकी और अन्य जैविक विज्ञान के बीएससी और एमएससी छात्रों के लिए।|last=Dubey, R. C.|date=2014|publisher=S Chand|isbn=978-81-219-4290-4|location=New Delhi|oclc=883695533}}</ref>




== उदाहरण ==
== उदाहरण ==
{{main article|डेटा संरचनाओं की सूची}}
{{main article|डेटा संरचनाओं की सूची}}
[[File:Python 3. The standard type hierarchy.png|thumb|प्रोग्रामिंग भाषा Python_(programming_language) का मानक डेटा प्रकार पदानुक्रम।]]कई प्रकार की डेटा संरचनाएँ हैं, जो सामान्यतः सरल [[आदिम डेटा प्रकार]]ों पर निर्मित होती हैं। प्रसिद्ध उदाहरण हैं:<ref>{{Cite book|title=डेटा संरचनाएं|last=Seymour|first=Lipschutz|date=2014|publisher=McGraw Hill Education|isbn=9781259029967|edition=Revised first|location=New Delhi, India|oclc=927793728}}</ref>
[[File:Python 3. The standard type hierarchy.png|thumb|प्रोग्रामिंग भाषा पायथन (प्रोग्रामिंग भाषा) का मानक डेटा प्रकार पदानुक्रम।]]कई प्रकार की डेटा संरचनाएँ हैं, जो सामान्यतः सरल [[आदिम डेटा प्रकार]] पर निर्मित होती हैं। प्रसिद्ध उदाहरण हैं:<ref>{{Cite book|title=डेटा संरचनाएं|last=Seymour|first=Lipschutz|date=2014|publisher=McGraw Hill Education|isbn=9781259029967|edition=Revised first|location=New Delhi, India|oclc=927793728}}</ref>
* एक सरणी डेटा संरचना एक विशिष्ट क्रम में कई तत्व हैं, सामान्यतः सभी एक ही प्रकार के होते हैं (भाषा के आधार पर, अलग-अलग तत्व या तो सभी एक ही प्रकार के होने के लिए मजबूर हो सकते हैं, या लगभग किसी भी प्रकार के हो सकते हैं)। कौन से तत्व की आवश्यकता है यह निर्दिष्ट करने के लिए तत्वों को पूर्णांक अनुक्रमणिका का उपयोग करके एक्सेस किया जाता है। विशिष्ट कार्यान्वयन सरणियों के तत्वों के लिए सन्निहित स्मृति शब्द आवंटित करते हैं (लेकिन यह हमेशा एक आवश्यकता नहीं है)। सारणियाँ निश्चित-लंबाई या आकार बदलने योग्य हो सकती हैं।
* सरणी डेटा संरचना एक विशिष्ट क्रम में कई तत्व हैं, सामान्यतः सभी एक ही प्रकार के होते हैं (भाषा के आधार पर, अलग-अलग तत्व या तो सभी एक ही प्रकार के होने के लिए विवश हो सकते हैं, या लगभग किसी भी प्रकार के हो सकते हैं)। कौन से तत्व की आवश्यकता है यह निर्दिष्ट करने के लिए तत्वों को पूर्णांक अनुक्रमणिका का उपयोग करके एक्सेस किया जाता है। विशिष्ट कार्यान्वयन सरणियों के तत्वों के लिए सन्निहित स्मृति शब्द आवंटित करते हैं (लेकिन यह हमेशा एक आवश्यकता नहीं है)। सारणियाँ निश्चित-लंबाई या आकार बदलने योग्य हो सकती हैं।
* एक लिंक की गई सूची (जिसे केवल सूची भी कहा जाता है) किसी भी प्रकार के डेटा तत्वों का एक रैखिक संग्रह है, जिसे नोड कहा जाता है, जहां प्रत्येक नोड का अपना मान होता है, और लिंक की गई सूची में अगले नोड को इंगित करता है। एक सरणी पर एक लिंक की गई सूची का मुख्य लाभ यह है कि मूल्यों को शेष सूची को स्थानांतरित किए बिना हमेशा कुशलतापूर्वक डाला और हटाया जा सकता है। कुछ अन्य ऑपरेशन, जैसे कि एक निश्चित तत्व के लिए यादृच्छिक अभिगम, चुकी सरणियों की तुलना में सूचियों में धीमे होते हैं।
* लिंक की गई सूची (जिसे केवल सूची भी कहा जाता है) किसी भी प्रकार के डेटा तत्वों का रैखिक संग्रह है, जिसे नोड कहा जाता है, जहां प्रत्येक नोड का अपना मान होता है, और लिंक की गई सूची में अगले नोड को इंगित करता है। एक सरणी पर एक लिंक की गई सूची का मुख्य लाभ यह है कि मूल्यों को शेष सूची को स्थानांतरित किए बिना हमेशा कुशलतापूर्वक डाला और हटाया जा सकता है। कुछ अन्य ऑपरेशन, जैसे कि निश्चित तत्व के लिए यादृच्छिक अभिगम, चुकी सरणियों की तुलना में सूचियों में धीमे होते हैं।
* एक रिकॉर्ड (कंप्यूटर विज्ञान) (जिसे टपल या स्ट्रक्चर भी कहा जाता है) एक समग्र डेटा संरचना है। एक रिकॉर्ड एक मान है जिसमें अन्य मान होते हैं, सामान्यतः निश्चित संख्या और अनुक्रम में और सामान्यतः नामों से अनुक्रमित होते हैं। रिकॉर्ड के तत्वों को सामान्यतः फ़ील्ड या सदस्य कहा जाता है। वस्तु-उन्मुख प्रोग्रामिंग के संदर्भ में, रिकॉर्ड को वस्तुओं से अलग करने के लिए सादे पुराने डेटा संरचनाओं के रूप में जाना जाता है।<ref>{{cite web|url=http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html |access-date=6 December 2016 |title=C++ भाषा नोट: POD प्रकार|author=Walter E. Brown |publisher=[[Fermi National Accelerator Laboratory]] |date=September 29, 1999|archive-url=https://web.archive.org/web/20161203130543/http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html|archive-date=2016-12-03}}</ref>
* रिकॉर्ड (कंप्यूटर विज्ञान) (जिसे टपल या स्ट्रक्चर भी कहा जाता है) समग्र डेटा संरचना है। रिकॉर्ड एक मान है जिसमें अन्य मान होते हैं, सामान्यतः निश्चित संख्या और अनुक्रम में और सामान्यतः नामों से अनुक्रमित होते हैं। रिकॉर्ड के तत्वों को सामान्यतः फ़ील्ड या सदस्य कहा जाता है। वस्तु-उन्मुख प्रोग्रामिंग के संदर्भ में, रिकॉर्ड को वस्तुओं से अलग करने के लिए सादे पुराने डेटा संरचनाओं के रूप में जाना जाता है।<ref>{{cite web|url=http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html |access-date=6 December 2016 |title=C++ भाषा नोट: POD प्रकार|author=Walter E. Brown |publisher=[[Fermi National Accelerator Laboratory]] |date=September 29, 1999|archive-url=https://web.archive.org/web/20161203130543/http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html|archive-date=2016-12-03}}</ref>
* हैश टेबल, ग्राफ (कंप्यूटर साइंस) और [[बाइनरी पेड़]]
* हैश टेबल, ग्राफ (कंप्यूटर साइंस) और [[बाइनरी पेड़]]


== भाषा समर्थन ==
== भाषा समर्थन ==
अधिकांश [[सभा की भाषा]] और कुछ [[निम्न-स्तरीय प्रोग्रामिंग भाषा]] | लो-लेवल लैंग्वेज, जैसे बीसीपीएल (बेसिक कंबाइंड प्रोग्रामिंग लैंग्वेज), में डेटा स्ट्रक्चर के लिए बिल्ट-इन समर्थन की कमी होती है। दूसरी ओर, [[उच्च स्तरीय प्रोग्रामिंग भाषा]] और कुछ उच्च-स्तरीय असेंबली भाषाएं, जैसे कि [[एमएएसएम]], में विशेष सिंटैक्स या कुछ डेटा संरचनाओं, जैसे रिकॉर्ड और सरणियों के लिए अन्य अंतर्निहित समर्थन होता है। उदाहरण के लिए, [[सी (प्रोग्रामिंग भाषा)]] ([[बीसीपीएल]] का प्रत्यक्ष वंशज) और [[पास्कल (प्रोग्रामिंग भाषा)]] लैंग्वेज क्रमशः वैक्टर (वन-डायमेंशनल एरे डेटा टाइप) और मल्टी-डायमेंशनल के अतिरिक्त रिकॉर्ड (कंप्यूटर साइंस) और रिकॉर्ड को सपोर्ट करती हैं। सरणियाँ।<ref name="gnu-c">{{cite web | url=https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html | title=जीएनयू सी मैनुअल| publisher=Free Software Foundation | access-date=2014-10-15}}</ref><ref>{{cite web | url=http://www.freepascal.org/docs-html/ref/ref.html | title=फ्री पास्कल: रेफरेंस गाइड| publisher=Free Pascal |first = Michaël |last =Van Canneyt|date = September 2017}}</ref>
अधिकांश [[सभा की भाषा]] और कुछ [[निम्न-स्तरीय प्रोग्रामिंग भाषा]] लो-लेवल [[निम्न-स्तरीय प्रोग्रामिंग भाषा|भाषा]], जैसे बीसीपीएल (बेसिक कंबाइंड प्रोग्रामिंग [[निम्न-स्तरीय प्रोग्रामिंग भाषा|भाषा]]), में डेटा स्ट्रक्चर के लिए बिल्ट-इन समर्थन की कमी होती है। दूसरी ओर, [[उच्च स्तरीय प्रोग्रामिंग भाषा]] और कुछ उच्च-स्तरीय असेंबली भाषाएं, जैसे कि [[एमएएसएम]], में विशेष सिंटैक्स या कुछ डेटा संरचनाओं, जैसे रिकॉर्ड और सरणियों के लिए अन्य अंतर्निहित समर्थन होता है। उदाहरण के लिए, [[सी (प्रोग्रामिंग भाषा)]] ([[बीसीपीएल]] का प्रत्यक्ष वंशज) और [[पास्कल (प्रोग्रामिंग भाषा)]] लैंग्वेज क्रमशः वैक्टर (वन-डायमेंशनल एरे डेटा टाइप) और मल्टी-डायमेंशनल के अतिरिक्त रिकॉर्ड (कंप्यूटर साइंस) और रिकॉर्ड को सपोर्ट करती हैं। सरणियाँ।<ref name="gnu-c">{{cite web | url=https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html | title=जीएनयू सी मैनुअल| publisher=Free Software Foundation | access-date=2014-10-15}}</ref><ref>{{cite web | url=http://www.freepascal.org/docs-html/ref/ref.html | title=फ्री पास्कल: रेफरेंस गाइड| publisher=Free Pascal |first = Michaël |last =Van Canneyt|date = September 2017}}</ref>


[[जावा (प्रोग्रामिंग भाषा)]] में कुछ प्रकार की [[पुस्तकालय (कम्प्यूटिंग)]] तंत्र होता है जो डेटा संरचना कार्यान्वयन को विभिन्न कार्यक्रमों द्वारा पुन: उपयोग करने की अनुमति देता है। आधुनिक भाषाएं सामान्यतः मानक पुस्तकालयों के साथ आती हैं जो सबसे आम डेटा संरचनाओं को प्रयुक्त करती हैं। [[C++]] [[मानक टेम्पलेट लाइब्रेरी]], [[जावा कलेक्शंस फ्रेमवर्क]] और [[Microsoft|माइक्रोसॉफ्ट]] .नेट फ्रेमवर्क इसके उदाहरण हैं।
[[जावा (प्रोग्रामिंग भाषा)]] में कुछ प्रकार की [[पुस्तकालय (कम्प्यूटिंग)]] तंत्र होता है जो डेटा संरचना कार्यान्वयन को विभिन्न कार्यक्रमों द्वारा पुन: उपयोग करने की अनुमति देता है। आधुनिक भाषाएं सामान्यतः मानक पुस्तकालयों के साथ आती हैं जो सबसे आम डेटा संरचनाओं को प्रयुक्त करती हैं। [[C++]] [[मानक टेम्पलेट लाइब्रेरी]], [[जावा कलेक्शंस फ्रेमवर्क]] और [[Microsoft|माइक्रोसॉफ्ट]] .नेट फ्रेमवर्क इसके उदाहरण हैं।


आधुनिक भाषाएं सामान्यतः [[मॉड्यूलर प्रोग्रामिंग]] का समर्थन करती हैं, लाइब्रेरी मॉड्यूल के [[इंटरफ़ेस (कंप्यूटिंग)]] और इसके कार्यान्वयन के बीच अलगाव। कुछ [[अपारदर्शी डेटा प्रकार]] प्रदान करते हैं जो क्लाइंट को कार्यान्वयन विवरण छिपाने की अनुमति देते हैं। [[वस्तु-उन्मुख प्रोग्रामिंग भाषा]], जैसे C++, जावा (प्रोग्रामिंग लैंग्वेज), और स्मॉलटॉक, सामान्यतः इस उद्देश्य के लिए क्लासेस (कंप्यूटर साइंस) का उपयोग करते हैं।
आधुनिक भाषाएं सामान्यतः [[मॉड्यूलर प्रोग्रामिंग]] का समर्थन करती हैं, लाइब्रेरी मॉड्यूल के [[इंटरफ़ेस (कंप्यूटिंग)]] और इसके कार्यान्वयन के बीच अलगाव। कुछ [[अपारदर्शी डेटा प्रकार]] प्रदान करते हैं जो क्लाइंट को कार्यान्वयन विवरण छिपाने की अनुमति देते हैं। [[वस्तु-उन्मुख प्रोग्रामिंग भाषा]], जैसे C++, जावा (प्रोग्रामिंग [[निम्न-स्तरीय प्रोग्रामिंग भाषा|भाषा]]), और स्मॉलटॉक, सामान्यतः इस उद्देश्य के लिए क्लासेस (कंप्यूटर साइंस) का उपयोग करते हैं।


कई ज्ञात डेटा संरचनाओं में [[समवर्ती डेटा संरचना]] संस्करण होते हैं जो एकाधिक कंप्यूटिंग थ्रेड्स को एक साथ डेटा संरचना के एक ठोस उदाहरण तक पहुंचने की अनुमति देते हैं।<ref>{{cite web |author1=Mark Moir and Nir Shavit |title=समवर्ती डेटा संरचनाएं|url=https://www.cs.tau.ac.il/~shanir/concurrent-data-structures.pdf |archive-url=https://web.archive.org/web/20110401070433/http://www.cs.tau.ac.il/~shanir/concurrent-data-structures.pdf |archive-date=2011-04-01 |url-status=live |website=cs.tau.ac.il}}</ref>
कई ज्ञात डेटा संरचनाओं में [[समवर्ती डेटा संरचना]] संस्करण होते हैं जो एकाधिक कंप्यूटिंग थ्रेड्स को एक साथ डेटा संरचना के एक ठोस उदाहरण तक पहुंचने की अनुमति देते हैं।<ref>{{cite web |author1=Mark Moir and Nir Shavit |title=समवर्ती डेटा संरचनाएं|url=https://www.cs.tau.ac.il/~shanir/concurrent-data-structures.pdf |archive-url=https://web.archive.org/web/20110401070433/http://www.cs.tau.ac.il/~shanir/concurrent-data-structures.pdf |archive-date=2011-04-01 |url-status=live |website=cs.tau.ac.il}}</ref>
Line 72: Line 72:




==इस पेज में लापता आंतरिक लिंक की सूची==


*डेटा प्राप्त करना
 
*क्षमता
 
*डाटा प्रकार
 
*संबंध का डेटाबेस
 
*स्ट्रिंग (कंप्यूटर विज्ञान)
 
*सरणी डेटा संरचना
 
*अंकगणितीय आपरेशनस
 
*सबरूटीन
 
*सूचक (कंप्यूटर प्रोग्रामिंग)
 
*लिंक्ड सूची
 
*रैंडम एक्सेस
 
*सादा पुरानी डेटा संरचना
 
*वस्तु उन्मुख कार्यकर्म
*संपूर्ण आंकड़ा
*सरणी डेटा प्रकार
*छोटी बात
*कक्षाएं (कंप्यूटर विज्ञान)
*वृक्ष (डेटा संरचना)
==बाहरी कड़ियाँ==
==बाहरी कड़ियाँ==
{{Sister project links|wikt=data structure|commons=Category:Data structures|b=Data Structures|v=Topic:Data structures|n=no}}
{{Sister project links|wikt=data structure|commons=Category:Data structures|b=Data Structures|v=Topic:Data structures|n=no}}
Line 99: Line 92:
* [http://people.cs.vt.edu/~shaffer/Book/C++3e20110915.pdf Schaffer, C. ''Data Structures and Algorithm Analysis'']
* [http://people.cs.vt.edu/~shaffer/Book/C++3e20110915.pdf Schaffer, C. ''Data Structures and Algorithm Analysis'']


{{Data structures}}
[[Category:Articles with hatnote templates targeting a nonexistent page|Data Structure]]
{{Data types}}
[[Category:Collapse templates|Data Structure]]
{{Data model}}
[[Category:Created On 27/12/2022|Data Structure]]
{{Strings}}
[[Category:Interwiki link templates| ]]
 
[[Category:Lua-based templates]]
{{Authority control}}
[[Category:Machine Translated Page|Data Structure]]
 
[[Category:Multi-column templates]]
{{DEFAULTSORT:Data Structure}}[[श्रेणी:डाटा संरचनाएं| ]]
[[Category:Navigational boxes| ]]
 
[[Category:Navigational boxes without horizontal lists|Data Structure]]
 
[[Category:Pages using Sister project links with default search|s]]
[[Category: Machine Translated Page]]
[[Category:Pages using div col with small parameter]]
[[Category:Created On 27/12/2022]]
[[Category:Pages with script errors|Data Structure]]
[[Category:Short description with empty Wikidata description|Data Structure]]
[[Category:Sidebars with styles needing conversion|Data Structure]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Templates using under-protected Lua modules]]
[[Category:Wikipedia fully protected templates|Sister project links]]

Latest revision as of 10:20, 25 September 2023

डेटा संरचना जिसे हैश तालिका के रूप में जाना जाता है।

कंप्यूटर विज्ञान में, डेटा संरचना डेटा संगठन, प्रबंधन और भंडारण प्रारूप है जिसे सामान्यतः दक्षता डेटा एक्सेस टू डेटा के लिए चुना जाता है।[1][2][3] अधिक सटीक रूप से, डेटा संरचना डेटा मानों का एक संग्रह है, उनके बीच संबंध, और कार्य या संचालन जो डेटा पर प्रयुक्त किए जा सकते हैं,[4] यानी, यह डेटा के बारे में एक बीजगणितीय संरचना है। [1][2][3]

प्रयोग

डेटा संरचनाएं सार डेटा प्रकार (एडीटी) के आधार के रूप में कार्य करती हैं। एडीटी डेटा प्रकार के तार्किक रूप को परिभाषित करता है। डेटा संरचना डेटा प्रकार के भौतिक रूप को प्रयुक्त करती है।[5]

विभिन्न प्रकार की डेटा संरचनाएँ विभिन्न प्रकार के अनुप्रयोगों के अनुकूल होती हैं, और कुछ विशिष्ट कार्यों के लिए अत्यधिक विशिष्ट होती हैं। उदाहरण के लिए, संबंधपरक डेटाबेस सामान्यतः डेटा पुनर्प्राप्ति के लिए बी-वृक्ष इंडेक्स का उपयोग करते हैं,[6] जबकि संकलक कार्यान्वयन सामान्यतः पहचानकर्ताओं को देखने के लिए हैश टेबल का उपयोग करता है।[7]

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


कार्यान्वयन

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

डेटा संरचना के कार्यान्वयन के लिए सामान्यतः उपनेमका का एक सेट लिखने की आवश्यकता होती है जो उस संरचना के उदाहरणों को बनाते और हेरफेर करते हैं। डेटा संरचना की दक्षता का उन कार्यों से अलग विश्लेषण नहीं किया जा सकता है। यह अवलोकन अमूर्त डेटा प्रकार की सैद्धांतिक अवधारणा को प्रेरित करता है, डेटा संरचना जो उस पर किए जा सकने वाले संचालन द्वारा अप्रत्यक्ष रूप से परिभाषित होती है, और उन कार्यों के गणितीय गुण (उनके स्थान और समय की लागत सहित) होते है।[9]


उदाहरण

प्रोग्रामिंग भाषा पायथन (प्रोग्रामिंग भाषा) का मानक डेटा प्रकार पदानुक्रम।

कई प्रकार की डेटा संरचनाएँ हैं, जो सामान्यतः सरल आदिम डेटा प्रकार पर निर्मित होती हैं। प्रसिद्ध उदाहरण हैं:[10]

  • सरणी डेटा संरचना एक विशिष्ट क्रम में कई तत्व हैं, सामान्यतः सभी एक ही प्रकार के होते हैं (भाषा के आधार पर, अलग-अलग तत्व या तो सभी एक ही प्रकार के होने के लिए विवश हो सकते हैं, या लगभग किसी भी प्रकार के हो सकते हैं)। कौन से तत्व की आवश्यकता है यह निर्दिष्ट करने के लिए तत्वों को पूर्णांक अनुक्रमणिका का उपयोग करके एक्सेस किया जाता है। विशिष्ट कार्यान्वयन सरणियों के तत्वों के लिए सन्निहित स्मृति शब्द आवंटित करते हैं (लेकिन यह हमेशा एक आवश्यकता नहीं है)। सारणियाँ निश्चित-लंबाई या आकार बदलने योग्य हो सकती हैं।
  • लिंक की गई सूची (जिसे केवल सूची भी कहा जाता है) किसी भी प्रकार के डेटा तत्वों का रैखिक संग्रह है, जिसे नोड कहा जाता है, जहां प्रत्येक नोड का अपना मान होता है, और लिंक की गई सूची में अगले नोड को इंगित करता है। एक सरणी पर एक लिंक की गई सूची का मुख्य लाभ यह है कि मूल्यों को शेष सूची को स्थानांतरित किए बिना हमेशा कुशलतापूर्वक डाला और हटाया जा सकता है। कुछ अन्य ऑपरेशन, जैसे कि निश्चित तत्व के लिए यादृच्छिक अभिगम, चुकी सरणियों की तुलना में सूचियों में धीमे होते हैं।
  • रिकॉर्ड (कंप्यूटर विज्ञान) (जिसे टपल या स्ट्रक्चर भी कहा जाता है) समग्र डेटा संरचना है। रिकॉर्ड एक मान है जिसमें अन्य मान होते हैं, सामान्यतः निश्चित संख्या और अनुक्रम में और सामान्यतः नामों से अनुक्रमित होते हैं। रिकॉर्ड के तत्वों को सामान्यतः फ़ील्ड या सदस्य कहा जाता है। वस्तु-उन्मुख प्रोग्रामिंग के संदर्भ में, रिकॉर्ड को वस्तुओं से अलग करने के लिए सादे पुराने डेटा संरचनाओं के रूप में जाना जाता है।[11]
  • हैश टेबल, ग्राफ (कंप्यूटर साइंस) और बाइनरी पेड़

भाषा समर्थन

अधिकांश सभा की भाषा और कुछ निम्न-स्तरीय प्रोग्रामिंग भाषा लो-लेवल भाषा, जैसे बीसीपीएल (बेसिक कंबाइंड प्रोग्रामिंग भाषा), में डेटा स्ट्रक्चर के लिए बिल्ट-इन समर्थन की कमी होती है। दूसरी ओर, उच्च स्तरीय प्रोग्रामिंग भाषा और कुछ उच्च-स्तरीय असेंबली भाषाएं, जैसे कि एमएएसएम, में विशेष सिंटैक्स या कुछ डेटा संरचनाओं, जैसे रिकॉर्ड और सरणियों के लिए अन्य अंतर्निहित समर्थन होता है। उदाहरण के लिए, सी (प्रोग्रामिंग भाषा) (बीसीपीएल का प्रत्यक्ष वंशज) और पास्कल (प्रोग्रामिंग भाषा) लैंग्वेज क्रमशः वैक्टर (वन-डायमेंशनल एरे डेटा टाइप) और मल्टी-डायमेंशनल के अतिरिक्त रिकॉर्ड (कंप्यूटर साइंस) और रिकॉर्ड को सपोर्ट करती हैं। सरणियाँ।[12][13]

जावा (प्रोग्रामिंग भाषा) में कुछ प्रकार की पुस्तकालय (कम्प्यूटिंग) तंत्र होता है जो डेटा संरचना कार्यान्वयन को विभिन्न कार्यक्रमों द्वारा पुन: उपयोग करने की अनुमति देता है। आधुनिक भाषाएं सामान्यतः मानक पुस्तकालयों के साथ आती हैं जो सबसे आम डेटा संरचनाओं को प्रयुक्त करती हैं। C++ मानक टेम्पलेट लाइब्रेरी, जावा कलेक्शंस फ्रेमवर्क और माइक्रोसॉफ्ट .नेट फ्रेमवर्क इसके उदाहरण हैं।

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

कई ज्ञात डेटा संरचनाओं में समवर्ती डेटा संरचना संस्करण होते हैं जो एकाधिक कंप्यूटिंग थ्रेड्स को एक साथ डेटा संरचना के एक ठोस उदाहरण तक पहुंचने की अनुमति देते हैं।[14]


यह भी देखें


संदर्भ

  1. 1.0 1.1 Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009). एल्गोरिदम का परिचय, तीसरा संस्करण (3rd ed.). The MIT Press. ISBN 978-0262033848.
  2. 2.0 2.1 Black, Paul E. (15 December 2004). "data structure". In Pieterse, Vreda; Black, Paul E. (eds.). एल्गोरिदम और डेटा संरचनाओं का शब्दकोश [ऑनलाइन]. National Institute of Standards and Technology. Retrieved 2018-11-06.
  3. 3.0 3.1 "डेटा संरचना". Encyclopaedia Britannica. 17 April 2017. Retrieved 2018-11-06.
  4. Wegner, Peter; Reilly, Edwin D. (2003-08-29). कंप्यूटर विज्ञान का विश्वकोश. Chichester, UK: John Wiley and Sons. pp. 507–512. ISBN 978-0470864128.
  5. "सार डेटा प्रकार". Virginia Tech - CS3 Data Structures & Algorithms.
  6. Gavin Powell (2006). "Chapter 8: Building Fast-Performing Database Models". शुरुआत डेटाबेस डिजाइन. Wrox Publishing. ISBN 978-0-7645-7490-0.
  7. "1.5 हैश तालिका के अनुप्रयोग". University of Regina - CS210 Lab: Hash Table. Archived from the original on 2021-04-27. Retrieved 2018-06-14.
  8. "जब डेटा मुख्य मेमोरी में फ़िट होने के लिए बहुत बड़ा हो". homes.sice.indiana.edu.
  9. Dubey, R. C. (2014). उन्नत जैव प्रौद्योगिकी: जैव प्रौद्योगिकी और अन्य जैविक विज्ञान के बीएससी और एमएससी छात्रों के लिए।. New Delhi: S Chand. ISBN 978-81-219-4290-4. OCLC 883695533.
  10. Seymour, Lipschutz (2014). डेटा संरचनाएं (Revised first ed.). New Delhi, India: McGraw Hill Education. ISBN 9781259029967. OCLC 927793728.
  11. Walter E. Brown (September 29, 1999). "C++ भाषा नोट: POD प्रकार". Fermi National Accelerator Laboratory. Archived from the original on 2016-12-03. Retrieved 6 December 2016.
  12. "जीएनयू सी मैनुअल". Free Software Foundation. Retrieved 2014-10-15.
  13. Van Canneyt, Michaël (September 2017). "फ्री पास्कल: रेफरेंस गाइड". Free Pascal.
  14. Mark Moir and Nir Shavit. "समवर्ती डेटा संरचनाएं" (PDF). cs.tau.ac.il. Archived (PDF) from the original on 2011-04-01.


ग्रन्थसूची


आगे की पढाई









बाहरी कड़ियाँ