Data Structure and Algorithm

    Data Structure

    Data Computer(कम्प्यूटर) में सबसे महत्वपूर्ण Elements होता है। इसी डेटा पर Program के माध्यम से Calculation की जाती हैं। मूल रूप से Data के दो प्रकार होते हैं:-

    1. Numeric (न्यूमैरिक) डेटा। 
    2. Non-Numeric (नॉन-न्यूमैरिक) डेटा।

    उदाहरण के लिए किसी Student के Mark Numeric (न्यूमैरिक) Data होंगे वहीं उसका नाम Non-Numeric(नॉन-न्यूमैरिक) डेटा होगा । Numeric (न्यूमैरिक) Data पर mathematical ऑपरेशन किए जा सकते हैं, वहीं Non-Numeric(नॉन-न्यूमैरिक) डेटा पर यह ऑपरेशन संभव नहीं होगें ।

    उदाहरण के लिए एक Class के सभी Students के marks का Sum ज्ञात करने के लिए उन पर '+' Operation का प्रयोग किया जा सकता है, वहीं सभी Students के नामों पर '+' Operation का प्रयोग संभव नहीं होगा। इस प्रकार यह कहा जा सकता है कि किसी डेटा पर कौनसा  Operation किया जा सकता है, यह उसके Data Type(डेटा टाइप) पर निर्भर करता है।

    किसी भी Programming Language(प्रोग्रामिंग लैंग्वेज) में डेटा को स्टोर करने से पूर्व ऐसा Data-Type(डेटा-टाइप) चुना जाता है जो कम से कम मैमोरी प्रयोग में ले और डेटा की आवश्यकता को पूरा भी करे। उदाहरण के लिए यदि हमें किसी कार की Price स्टोर करनी है तो हम long Data-Type(डेटा-टाइप) चुनेंगे। इसके पीछे कारण होगा कि कार की कीमत लाखों रूपए में होती है, जो कि int की रेंज के बाहर है। दूसरी ओर यदि हमें किसी पेन की कीमत स्टोर करनी है तो इसे int में ही स्टोर किया जा सकता है। इस प्रकार यह कहा जा सकता है कि मैमोरी का optimum utilization(बेहतर प्रयोग) तभी संभव होगा जबकि डेटा को बेहतर ढंग से स्टोर किया जाए। डेटा के बेहतर ढंग से स्टोर होने से डेटा पर read, write, search आदि ऑपरेशन कम समय तथा कम मैमोरी में भी संभव हो जाते हैं।

    Data Structure(डेटा स्ट्रक्चर) ऐसा तरीका है जो यह बताता है कि डेटा को मैमोरी में इस प्रकार स्टोर किया जाए, ताकि वह कम मैमोरी में स्टोर हो जाए तथा साथ ही साथ उस पर किए जाने वाले विभिन्न ऑपरेशन भी कम मैमोरी तथा समय में पूरे हो सकें। यह विभिन्न ऑपेरशन search traverse, insert, delete आदि हो सकते हैं। 

    Data Structure = Data +Data पर किए जाने वाले विभिन्न Operation 

    तकनीकी भाषा में कहा जाए तो Data-Structure(डेटा स्ट्रक्चर) से आशय डेटा को logical एवं गणितीय आधार पर स्टोर करने के तरीके से होता है। यह विभिन्न तरीके Array Structure(एरे स्ट्रक्चर), Lined List(लिंक लिस्ट), Stack(स्टैक), Queue(क्यू), Tree(ट्री),  graph(ग्राफ) आदि के रूप में हो सकते हैं।

    यह डेटा single value के रूप में भी हो सकता है तथा एक से अधिक संबंधित वैल्यूज का सेट भी हो सकता है। उदाहरण के लिए एक Student द्वारा किसी Subject में प्राप्त अंक single value का उदाहरण है तथा उसी Student के बारे में विभिन्न जानकारी (जैसे उसका Name, Total Marks, Date of Birth आदि) एक से अधिक वैल्यूज का सेट है, जो कि किसी एक Student से ही संबंधित है।

    For Example यदि विभिन्न Student की List दर्शानी हो तो Array(एरे) का प्रयोग किया जा सकता है। वहीं यदि किसी टिकट विंडो पर लगी कतार को दर्शाना हो तो इसके लिए Queue(क्यू)  का प्रयोग किया जा सकता है। इसी प्रकार यदि किसी कंपनी में कर्मचारियों को उनके पद के आधार पर दर्शाना हो तो tree(ट्री)  का चुनाव किया जाता है। 

    उपरोक्त विभिन्न प्रकार की आवश्यकताओं की पूर्ति करने के लिए डेटा को इस प्रकार स्टोर किया जाना होता है कि वह कम मैमोरी में Efficiently कार्य कर सके।

    Type Of Data Structure

    Data Structure(डेटा स्ट्रक्चर) को उनकी प्रकृति के आधार पर मुख्यतः दो भागों में विभाजित किया जा सकता है। यह निम्नानुसार हैं:

    1.  Linear Data Structure
    2.  Non linear Data Structure

    Data Structure, w3 coding club, W3 coding club

    Linear Data Structure

    डेटा स्ट्रक्चर में जब डेटा को प्रयोग करने का एक निश्चित क्रम हो तो ऐसे डेटा स्ट्रक्चर को लिनीयर डेटा स्ट्रक्चर कहा जाएगा। अन्य शब्दों में लिनीयर डेटा स्ट्रक्चर, डेटा को क्रमानुसार प्रयोग करने की सुविधा देता है। मुख्य लिनीयर डेटा स्ट्रक्चर निम्नांकित प्रकार के होते हैं:

    1. Array (एरे)
    2. Stack (स्टैक)
    3. Queue (क्यू)
    4. Link List (लिंक लिस्ट)

    Array:-

    Array से आशय ऐसे डेटा से है जिसके सभी Element(एलीमेंट) Memory(मैमोरी) में एक क्रम में स्टोर होते हों। इसके प्रत्येक Element को प्रयोग में लेने के लिए Index Number(इंडेक्स नम्बर) का प्रयोग किया जाता है, जिसे Sub-script(सबस्क्रिप्ट) Value भी कहा जाता है। Almost सभी Programing Language में यह Index Number(इंडेक्स नम्बर) 0 से प्रारंभ होते हैं, तथा अंतिम वैल्यू N - 1 होती है। यहां N से आशय Array के Size से है।

    उदाहरण के लिए यदि 10 Students के Marks को Store करने की आवश्यकता हो तो N से आशय 10 होगा। ऐसी स्थिति में lower bound या first Index(प्रथम इंडेक्स) 0 तथा Upper bound या Last Index(अंतिम इंडेक्स) 9 होगा। यह सभी एलीमेंट समान Type के ही होंगे तथा मैमोरी में contiguous form  में  स्टोर होंगे। इस प्रकार एरे को समान Data  Type (डेटा टाइप) की List के रूप में देखा जा सकता है।

    Stack:-

    Stack (स्टैक) भी एक list (लिस्ट) ही है, किन्तु इस पर किए जाने वाले Operation का क्रम Last In First Out (इसे शॉर्ट मे LIFO कहते हैं)  होता है। इस प्रकार की list में Last  में जोड़ी गई वैल्यू को सबसे पहले प्रयोग में लिया जाता है।

    किसी Element (एलीमेंट) को List (लिस्ट) में जोड़ना push (पुश) कहलाता है तथा हटाना pop(पॉप) कहलाता है। उदाहरण के लिए एक से ऊपर एक रखी गई Books.  जो पुस्तक सबसे अंत में रखी जाएगी, वही सबसे पहले वापस हटानी होगी।

    इसी प्रकार यदि किसी स्टैक में संख्याए स्टोर की जाती है तो उसे निम्न चित्र जा सकता है।

    Stack in Data Structure, w3 coding club, W3codingclub

    उपरोक्त उदाहरण में Stack (स्टैक) में जब Stage B में 280 वैल्यू push की जा रही है तो वह स्टैक के प्रारंभ में जुड़ रही है। इसी प्रकार Stage C में जब 50 वैल्यू push की जा रही है तो वह भी स्टैक के प्रारंभ में ही जुड़ रही है। दूसरी और जब Stage D में pop ऑपरेशन किया जा रहा है तो प्रारंभ की वैल्यू 50 Delete हो रही है। अंत में जब Stage E में 59 वैल्यू push की जा रही है तब भी यह वैल्यू स्टैक के प्रारंभ में ही जुड़ रही है। इसका आशय यह हुआ कि यदि Stage E पर pop ऑपरेशन किया गया तो वैल्यू 59 डिलीट होगी।

    Queue:-

    यह ऐसी List है जिसमें First In First Out (पहले आओ पहले जाओ)  यानी की FIFO के आधार पर Values को स्टोर किया जाता है। अन्य शब्दों में जो Element लिस्ट में सबसे पहले आएगा, वही सबसे पहले Use या Delete किया जाएगा। किसी टिकट विंडो पर लगी कतार इसका श्रेष्ठ उदाहरण है, जो व्यक्ति पहले लाइन में है, उसे ही पहले टिकट मिलेगा। जिसे टिकट मिल जाता है वह व्यक्ति कतार से हट जाता है। इसमें लिस्ट में एक सिरे पर एलीमेंट्स को Insert (इंसर्ट) तथा दूसरे सिरे से हटाया जाता है।

    Queue in Data Structure, w3 coding club, w3codingclub

    उपरोक्त उदाहरण में यदि कोई नया एलीमेंट जोड़ा जाता है तो वह 101 के बाद जुड़ेगा, वहीं किसी एलीमेंट को हटाना हो तो सर्वप्रथम 50 को हटाया जाएगा।

    Link List:-

    Link List(लिंक लिस्ट)  विभिन्न Nodes (नोड्स) का समूह होती है। एक Node विभिन्न Value से मिलकर बनता है। प्रत्येक Node के दो भाग होते हैं:-

    1.  Information (इंफॉर्मेशन)
    2.  Address Field (एड्रेस फील्ड)

    Information भाग User द्वारा दी गई जानकारी को Store करने के काम में आता है, वहीं Address Field अगले Node का Address स्टोर करने का कार्य करता है। इस प्रकार प्रत्येक Node में Data और अगले Node का Address स्टोर होता है। मैमोरी में यह सभी Node एक क्रम में स्टोर नहीं होते हैं, ऐसे में Address Field(एड्रेस फील्ड) यह बताता है कि अगला डेटा कहां पर स्टोर किया गया है।

    Link List in data structure, w3 coding club, w3codingclub

    Non-Linear Data Structure

    Non-Linear Data Structure (नॉन-लीनियर डेटा स्ट्रक्चर) में डेटा को प्रयोग करने के कई अलग-अलग क्रम हो सकते हैं। यह जिस प्रकार Linear Data Structure (लीनियर डेटा स्ट्रक्चर) में प्रत्येक एलीमेंट के पहले तथा बाद में 0 या 1 एलीमेंट ही होता है, वहीं Non-Linear Data Structure (नॉन-लीनियर डेटा स्ट्रक्चर) में प्रत्येक एलीमेंट के पहले अथवा बाद में एलीमेंट की संख्या 1 से अधिक भी हो सकती है। यह निम्नांकित प्रकार के हो सकते हैं:

    1.  Tree( ट्री)
    2.  Graph (ग्राफ)

    Tree:-

    Tree  एक Non-Linear Data Structure (नॉन-लीनियर डेटा स्ट्रक्चर) है। इसमें Element (एलीमेंट्स) के बीच के Relation (रिलेशन) को Hierarchy के माध्यम से दर्शाया जाता है। इसके शीर्ष के एलीमेंट को Root कहते हैं। उदाहरण के लिए एक कंपनी में एक Chief Manager (root) तथा उसके नीचे विभिन्न Regional Managers होते हैं। उनके नीचे फिर एक से अधिक District Managers हो सकते हैं। इस रिलेशन को निम्नांकित ट्री के माध्यम से दर्शाया जा सकता है।

    Data Structure,  W3 coding club, W3codingclub

    Graph:-

    विभिन्न Elements (एलीमेंट्स) के Group (समूह) को Graph (ग्राफ) कहा जाता है। विभिन्न शहरों के मध्य बिछा रेलवे ट्रेक, ग्राफ का उदाहरण हो सकता है। ट्री की भांति ग्राफ में Parent-child रिलेशन नहीं होता है। ग्राफ के माध्यम से गणना की जा सकती है कि एक शहर से दूसरे शहर जाने के लिए सबसे सस्ता या सबसे कम समय वाला विकल्प कौनसा होगा।

    Data structure, W3 coding club, w3codingclub

    ट्री तथा ग्राफ दोनों को मैमोरी में स्टोर करने के लिए पॉइंटर की मदद ली जाती है।

    Data Structure  पर होने वाले विभिन्न Operation

    Data Structure(डेटा स्ट्रक्चर) में Store किए गए Data को Process करने के लिए विभिन्न Operation किए जा सकते हैं। यह विभिन्न Operation  निम्नानुसार हो सकते हैं:

    • Insertion (डेटा जोड़ना)
    • Deletion (डेटा डिलीट करना)
    • Searching (डेटा ढूंढना)
    • Sorting (डेटा को सोर्ट करना)
    • Updation (डेटा अपडेट करना)
    • Merging (डेटा मर्ज करना)
    • Traversal (डेटा ट्रावर्जल)

    Insertion

    Insertion (इंसर्शन) से आशय दी गई लिस्ट में कोई नया Data जोड़ने से है। डेटा को लिस्ट के प्रारंभ, अंत अथवा किसी अन्य Position (पोजिशन) पर Insert (इंसर्ट) किया जा सकता है।

    Deletion

    Deletion (डिलीशन) से आशय दी गई लिस्ट से किसी Data को Delete से है। हटाए जाने वाला एलीमेंट भी लिस्ट के प्रारंभ, अंत अथवा किसी अन्य Position (पोज़िशन) पर हो सकता है।

    Searching

    दी गई लिस्ट में से इच्छित डेटा की उपस्थिति का पता लगाना Searching (सर्चिंग) कहलाता है। Searching (सर्चिंग) में यह पता लगाया जाता है कि Search किया जाने वाला Data लिस्ट में किस Position (पोज़िशन) पर है। यह Position (पोज़िशन)  User को बता दी जाती है। यदि Data लिस्ट में नहीं मिलता है तो इसकी सूचना भी User को दी जाती है।

    Sorting

    किसी लिस्ट के डेटा को Rearrange (पुनःव्यवस्थित) करने की प्रक्रिया को Sorting (सोर्टिंग) कहा जाता है। Sorting (सोर्टिंग) दो प्रकार की होती है: Ascending में तथा Descending) में ।

    Updation

    Updation (अपडेशन) से आशय Data में किए जाने वाले परिवर्तन से है। इस Operation (ऑपरेशन) से data की संख्या में कोई परिवर्तन नहीं होता है, सिर्फ पहले से मौजूद डेटा की वैल्यू में परिवर्तन होता है। किसी मौजूदा कर्मचारी के वेतन में बढ़ोतरी Updation (अपडेशन) का ही उदाहरण है।

    Merging

     Merging () से आशय उस प्रक्रिया से है जिसमें दो या दो से अधिक लिस्ट को मिला कर एक नई लिस्ट में स्टोर कर दिया जाता है।

    Traversal

    Traversal (ट्रावर्जल) शब्द travel से बना है, जिसका अर्थ होता है- घूमना। दी गई लिस्ट के प्रत्येक एलीमेंट को कम से कम एक बार access करने की प्रक्रिया को Traversal (ट्रावर्जल)कहा जाता है।

    Data Type

    किसी भी Programming Language (प्रोग्रामिंग लैंग्वेज) में Data Type (डेटा टाइप ) यह बताते हैं कि वह Language कितने प्रकार के Data को मैमोरी में Manage कर सकती है। सामान्यतः यह अलग-अलग Data Type (डेटा टाइप) मैमोरी में अलग-अलग Size में space लेते हैं। इन Data Type (डेटा टाइप)  पर किए जाने वाले Operation भी अलग-अलग हो सकते हैं। डेटा टाइप मुख्यतः दो प्रकार के होते हैं: 

    1. Primitive Data Type
    2. Composite Data Type

    1. Primitive Data Type:-

    ऐसा Data Type (डेटा टाइप) जिसे कोई Programming Language (प्रोग्रामिंग लैंग्वेज) सीधे-सीधे Support (सपोर्ट) करती हो। उदाहरण के लिए 'C' Programming लैंग्वेज में int, char, float, double तथा void,  Primitive Data Type (प्रिमिटिव डेटा टाइप) हैं। इस प्रकार के Data Type (डेटा टाइप) को Compiler (कंपाइलर) स्वयं Manege करने में सक्षम होता है।

    2. Composite Data Type

    ऐसा Data Type (डेटा टाइप) जो Primitive Data Type (प्रिमिटिव डेटा टाइप)  के आधार पर बनाया गया हो, Composite Data Type (कंपोज़िट डेटा टाइप) कहलाता है। उदाहरण के लिए 'C' Language  में struct, union या enum का प्रयोग करते हुए बनाए गए Data Type(डेटा टाइप) Composite Data Type (कंपोज़िट डेटा टाइप) की श्रेणी में आते हैं। निम्नांकित उदाहरण में कंपोजिट डेटा टाइप book बनाई गई है:


        struct book
        {
            int id;
            char title[20];
        };

     Composite Data Type (कंपोज़िट डेटा टाइप) को कोई Programming Language (प्रोग्रामिंग लैंग्वेज) सीधे सपोर्ट नहीं करती है। Programmer को इसे प्रयोग में लेने के लिए स्वयं प्रयास करने होते हैं।

    This article is contributed by Nirma Kanwar If you like W3 Coding club and would like to contribute, you can also write an article and mail on w3codingclub@gmail.com. See your article appearing on the W3 Coding Club main page.

    Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

    Post a Comment

    1 Comments

    1. Algorithms are great tools for improving business results, but its people and their leadership that ultimately determine business success.

      ReplyDelete