Data structure note in hindi


Introduction to Data Structures

किसी problem को solve करने के लिए data को computer memory में एक systematic तरीके से store और organize करना ताकि उसे efficiently use किया जा सके data structure कहलाता है।

एक programmer के रूप में आपको कई real world problems को solve करना होता है। इन problems को solve करते समय data और उसका organization बहुत Important  होता है।

एक programmer के रूप में problems को solve करने के लिए आपको निचे दिए जा रहे tasks perform करने पड़ सकते है।

Data structures create करना। 

Data structures के साथ operations (searching, sorting, traversing आदि) perform करना। 

Data structures की performances को analyze करना। 

आगे आने वाली tutorials में आप अलग अलग तरह के data structures create करना और उन data structures के साथ operations perform करना सीखेंगे। इसके अलावा आप data structures की performances को analyze करना भी सीखेंगे।

एक बात आपको हमेशा ध्यान रखनी चाहिए की data structures कोई language नहीं होती है। Data structure सिर्फ data को store और organize करने का तरीका होता है जिसे किसी भी programming language जैसे की C, C++ और java आदि में implement किया जा सकता है।

क्योंकि C एक basic language है जिसका syntax ज्यादातर modern programming languages द्वारा follow किया जाता है। इसलिए Data structures की इस tutorial series में C language के द्वारा ही data structures को implement करना बताया जाएगा।

Characteristics of Data Structures

किसी भी data structure में निचे दी गयी characteristics होती है।

Correctness 

किसी data structure की सबसे महत्वपूर्ण विशेषता यह होती है की वह problem को correctly solve करता है। यदि कोई data structure problem को partially (आधी अधूरी) solve करता है तो वह उस problem के लिए correct data structure नहीं माना जा सकता है।

Time Complexity

कोई data structure operations perform करने में जितना समय लेता है वह उस data structure की time complexity कहलाती है। अलग अलग data structures की time complexity check करने के लिए performance analysis और measurement tools प्रयोग किये जाते है। 

एक data structure के द्वारा perform होने वाले operations कम से कम समय लेते है। जिस data structure के द्वारा perform होने वाले operations कम से कम समय लेते है वही data structure problem को solve करने के लिए सही माना जाता है। 

Space Complexity 

कोई data structure data के storage और operations के लिए जितना computer memory space use करता है वह उस data structure की space complexity कहलाती है। Space complexity को test करने के लिए भी कई performance और analysis tools प्रयोग किये जाते है। 

एक data structure के द्वारा store किया जाने वाला data और perform किये जाने वाले operations कम से कम memory space use करते है। जिस data structure द्वारा कम से कम space use किया जाता है वही problem को solve करने के लिए best solution माना जाता है। 

Advantages of Data Structures

Data structures को implement और use करने की कुछ advantages निचे दी जा रही है। 

Gives Ability to Store and Process Data in Desired Way

Data structures की सबसे बड़ी advantages यह होती है की आप अपने मनचाहे तरीके से data को store कर सकते और और मनचाहे तरीके से ही उस पर operations peform कर सकते है। आप किसी निश्चित framework को follow करने के लिए बाध्य नहीं होते है। 

इससे आपको problems को solve करने के लिए creative solutions implement करने की आजादी मिलती है। 

Uses Less Processor Time 

Data structure द्वारा perform किये जाने वाले operations processor का कम से कम time utilize करते है। इससे computer processor पर कम load पड़ता है और वह बड़ी मात्रा में available data को भी कम समय में process कर पाता है। 

Uses Less Memory Space

जब आप किसी बड़े project पर काम करते है तो computer की memory को ठीक से utilize करना एक priority होती है। Data structures किसी problem के solution के रूप में कम से कम memory space acquire करते है। इससे आपके लिए दूसरे tasks perform करने के लिए पर्याप्त memory होती है और memory loss या shortage जैसी समस्याएँ नहीं आती है। 

Easy to Perform Complex Operations

Data structures के द्वारा किसी problem के सन्दर्भ में complex operations आसानी से प्रयोग किये जा सकते है। 

Introduction to Stack Push Operation 

जब एक stack data structure में कोई नया element insert किया जाता है तो वह operation push operation कहलाता है।

जब भी आप stack में कोई element insert करते है तो सबसे पहले यह check करते है की कँही stack full तो नहीं है। यदि stack full होता है तो आप उसमें कोई element insert नहीं कर सकते है। यह condition stack overflow कहलाती है।

Introduction to Stack Pop Operation

जब stack में से किसी item को remove किया जाता है तो वह operation pop operation कहलाता है। Stack items एक ही side (TOP) से remove किये जा सकते है। किसी भी item को आप stack के बीच से नहीं remove कर सकते है।

Stack में से किसी item को remove करने से पहले आप यह check करते है की कँही stack empty तो नहीं है। क्योंकि यदि stack empty होगा तो आप उसमें से item remove नहीं कर सकते है।

जब किसी empty stack में से कोई item remove करने का प्रयास किया जाता है तो वह situation stack underflow कहलाती है। Stack underflow की condition में आप user को message show करते है की stack empty है।

Introduction to Queue Insertion 

जब queue में कोई element add किया जाता है तो वह operation insertion कहलाता है। Queue के अंदर कोई भी element हमेशा rear side से ही insert किया जाता है। इसलिए जब भी queue data structure में कोई element add किया जाता है तो rear variable की value increase हो जाती है।

जब queue में कोई element add किया जाता है तो सबसे पहले यह check किया जाता है की कँही queue empty तो नहीं है। ऐसा इस प्रकार किया जाता है।

Introduction to Queue Deletion

जब queue में से किसी element को remove किया जाता है तो वह operation deletion कहलाता है। Queue में किसी भी element का deletion front से होता है। Queue में बीच में deletion operation perform नहीं किया जाता है। ऐसा इसलिए होता है क्योंकि queue data structure First in First Out structure को follow करता है।

Queue को define करते समय front और rear variables भी define किये जाते है। जब भी queue में से कोई element remove किया जाता है तो front variable की value change होती है।

Queue में से element को REMOVE करते समय सबसे पहले यह check किया जाता है की कँही queue empty तो नहीं है। यदि deletion करते समय queue empty पायी जाती है तो वह condition queue overflow कहलाती है। ऐसी situation में user को appropriate message show किया जाना चाहिए।

Introduction to Tree Data Structure 

Tree एक non-linear data structure है। अब तक आपने जितने भी data structures के बारे में पढ़ा है वे सब data को sequence में organize करते है। लेकिन tree data को non-linear way में store करता है।

Tree data structure का उपयोग प्राकतिक रूप से hierarchical data को organize करने के लिए किया जाता है। यदि दूसरे शब्दों में कहा जाये तो जब data elements के बीच hierarchical relationship हो तो उसे tree data structure के द्वारा represent किया जाता है।

Hierarchical relationship में data elements के बीच parent/child relationship होती है। इस तरह की relationship में एक data element के कई child elements हो सकते है और उन child elements के भी कई child elements हो सकते है।

एक linear data structure जैसे की linked-list, stack और queue आदि में एक element next और previous elements को point करता है। लेकिन tree एक non linear data structure है, tree में एक element बहुत सारे दूसरे elements को point कर सकता है।

आइये अब tree data structure का example देखते है। मान लीजिये आप किसी organization में employees की position को tree के द्वारा represent करना चाहते है। ऐसा आप इस प्रकार कर सकते है।

जैसा की आप ऊपर दिए गए diagram में देख सकते है, एक tree में data elements को node के द्वारा represent किया जाता है। Tree की सबसे top node root कहलाती है। Tree में nodes को links या edges द्वारा connect किया जाता है।

ऊपर दिए गए diagram में CEO (Chief Executive Officer) के under में CTO (Chief Technical Officer) और CFO (Chief Financial Officer) को दर्शाया गया है। इसके बाद CTO और CFO के under में दो दो software engineers और charted accountants को दर्शाया गया है।

Tree Data Structure Terminology 

Tree data structure के उपयोग के लिए कुछ ऐसी terms है जिनके बारे में आपको पता होना चाहिए। इनके बारे में निचे बताया जा रहा है। 

Node – Node द्वारा information/data को represent किया जाता है। Tree में store किये जाने वाला हर data item एक node होता है। 

Root – किसी tree की origin node root कहलाती है। यह वह node होती है जँहा से tree start होता है। 

Degree of Node – किसी node के जितने child होते है या फिर किसी node से जितने sub tree बनते है वे उस node की degree कहलाते है। 

Parent -किसी node की origin node उसकी parent node कहलाती है। 

Child – किसी node से निकलने वाली sub node उसकी child कहलाती है। 

Degree of Tree – Node के अधिकतम degree ही tree की degree कहलाती है। यदि tree में किसी node की अधिकतम degree 3 है तो tree की degree भी 3 ही होगी। 

Terminal/Leaf Node – वह node जिसकी कोई child node नहीं होती है terminal या leaf node कहलाती है।

Non Terminal Node – जिस node की degree zero नहीं होती है वह non-terminal node कहलाती है। 

Siblings – Same parent की child nodes sibling कहलाती है। 

Edges/Links – किसी tree में nodes को आपस में जिन lines द्वारा connect किया जाता है वे edges या links कहलाती है। 

Path – Source node से किसी node तक जिन nodes से travel किया जाता है उनका set उस node का path कहलाता है। 

Levels – Tree की root node का level हमेशा 0 होता है। Root की child nodes का level 1 होता है और उनकी child nodes का level 2 होता है। इसी प्रकार हर subtree के साथ एक level बढ़ता जाता है। 

Branch – Tree के अंदर एक path जो leaf node द्वारा terminate होता है branch कहा जाता है। 

Depth – Tree की जिस branch में सबसे अधिक nodes होती है वह उस tree की depth कहलाती है। 

Introduction to Binary Tree Traversal

Binary tree की सभी nodes को कोई operation perform करने के लिए एक साथ visit करना traversal कहलाता है। एक binary tree को traverse करते समय उसकी हर node को सिर्फ एक बार access किया जाता है और उसके साथ कुछ operation perform किया जाता है।

उदाहरण के लिए आप binary tree को traverse करके उसकी सभी nodes का data print कर सकते है। इसके अलावा binary tree को traverse करके node में available data को increase या decrease किया जा सकता है।

Introduction to Binary Tree Insertion

Binary tree को programmatically struct के द्वारा represent (या create) किया जाता है। इसे linked list representation भी कहा जाता है। इसके बारे में पिछली tutorial (Binary Tree Introduction) में बताया जा चूका है।

एक बार फिर से binary tree (node) create करने के लिए आप जिस syntax का प्रयोग करते है वह निचे बताया जा रहा है।

हालाँकि binary tree को array के द्वारा भी create किया जा सकता है लेकिन memory के बेहतर utilization के लिए ज्यादातर struct द्वारा ही binary tree को create किया जाता है।

Binary tree के अंदर कोई भी नयी node create करने के लिए ऊपर दिए गए struct का variable create किया जाता है। इस struct के जितने variables create किये जाते है उतनी nodes tree की create होती है।

Binary tree को उसकी root node define करके ही create किया जाता है। Root node define करने के बाद आप दूसरी nodes को binary tree में insert कर सकते है।

इसलिए insertion function में आप सबसे पहले यह check करते है की root की value NULL है या नहीं। यदि root की value NU LL होती है root को memory assign की जाती है और उसके data, left और right variables को initialize किया जाता है।

 


Tausif

Hi! My name is TAUSIF AHMAD I have completed B.Tech in Computer Science from Maulana Azad National Urdu University Hyderabad. I am always ready to have new experiences meet new people and learn new things. 1. I am very interested in Frontend Development. 2. I love video editing and graphics designing. 3. I enjoy challenges that enables to grow. 4. I am part time Blogger.

Post a Comment (0)
Previous Post Next Post