Stack Push and POP C++ Example: Data को Store करने के लिए Array एक Built–In Data Structure है, लेकिन Arrays को कई परिस्थितियों में उपयोग में लेना उचित नहीं होता।
Programming का एक बहुत ही बडा काम Data Storage Structure बनाना होता है ताकि हम कम से कम समय में Data को अच्छी तरीके से प्राप्त कर सकें या Memory में Store कर सकें। इसके लिए हम Linked Lists, Stacks, Queues, Hash Tables, Dictionaries, Vectors, Trees आदि का प्रयोग करते हैं। जहां कुछ Data Structure Random Data को Access करने के लिए बेहतर होते हैं, तो कुछ Data Structure किसी Data को किसी Container में Add करने के लिए बेहतर होते हैं। इसी तरह से कुछ Data Structure Data को आसानी व जल्दी से Sort करने या Search करने के लिए बेहतर होते हैं। यानी प्रत्येक Data Structure सभी प्रकार के काम को ठीक तरीके या बेहतर तरीके से नहीं कर सकता।
उदाहरण के लिए हम ये भी कह सकते हैं कि एक डॉक्टर मरीजों को ठीक कर सकता है लेकिन किसी Computer को Repair नहीं कर सकता। उसी तरह से एक Engineer एक Computer को अच्छी तरह से ठीक कर सकता है लेकिन किसी मरीज का इलाज वह नहीं कर सकता। यानी Doctor जो काम अच्छी तरीके से कर सकता है उसे कोई Engineer नहीं कर सकता है, उसी तरह जो काम एक Engineer अच्छी तरीके से कर सकता है उसे कोई Doctor नहीं कर सकता।
यही बात Computer में Data को Store करने व उसे प्राप्त करने पर भी लागू होती है। कोई Data Structure Data को किसी काम के लिए अच्छी तरह से Manage कर सकता है लेकिन वही Data Structure दूसरे काम के लिए Data को उतनी अच्छी तरह से Manage नहीं कर सकता जितनी अच्छी तरह से कोई दूसरा Data Structure कर सकता है।
Data Storage Structure किसी भी Category का हो सकता है जिसे किसी Class द्वारा Specify किया जा सकता है। यानी किसी Data के Storage के लिए हम Data को किस प्रकार से Model करना चाहते हैं, ये हम Class में बता सकते हैं। अभी तक हमने Bookstall व Time Class में दो तरीकों से Data को Store व Retrieve किया है। हम किसी Class में Data को Store करने के लिए Arrays, Linked Lists आदि का प्रयोग भी अपनी आवश्यकतानुसार कर सकते हैं, जैसाकि हमने Employee Class में Name को Store करने के लिए एक Array का प्रयोग किया है।
चलिए, हम एक उदाहरण देखते हैं जिसमें एक Class Stack को Model करता है। यानी हम एक Stack Data Structure को Class का प्रयोग करके समझने की कोशिश करते हैं।
Stack एक ऐसा Convenient Data Storage Structure है जिसका प्रयोग हम तब कर सकते हैं, जब हम Most Recently Store किए गए Data को Access करना चाहते हैं। Stack एक LIFO यानी Last In First Out सिद्धांत पर काम करने वाला Data Structure है। उदाहरण के लिए मानलो हमारे पास बहुत सी किताबें हैं और हमने हमारी किताबों को एक के ऊपर एक रखी है। अब यदि हम किताबें उठाना चाहें तो हमें वह किताब सबसे पहले उठानी पडती है जिसे हमने सबसे बाद में रखा है। यही Stack का सिद्धांत है।
Stacks का प्रयोग कई Programming Situations में किया जाता है। जैसे Expression Evaluation 12*x+14*(31+y) जहां हम Stack में Intermediate Results को Store करके रखते हैं। Function के Arguments व Return Values को भी Stack में Hold किया जाता है। आदि।
Pushing and Popping
Stack में हम किसी भी प्रकार के Data चाहे वह Primary Type का हो या User Defined Type का, Store करके रख सकते हैं लेकिन Array की तरह हम एक Stack में एक बार में केवल एक ही तरह के Data Store कर सकते हैं। यदि हमें दूसरे तरह के Data को Store करना हो, तो हमें दूसरा Stack Use करना होता है।
जब हम कोई मान Stack में रखते हैं तो इस प्रक्रिया को Push करना कहते हैं और जब हम Stack से कोई मान लेते हैं तो इसे Stack से Data का Pop होना कहते हैं।
हम यहां जो उदाहरण ले रहे हैं उसकी Class में हमने एक Array का प्रयोग Instance Data या Data Member के रूप में किया है। इस Stack Class में हम Integer मानों को Store करेंगे। ये Program निम्नानुसार है:
Program #include <iostream.h> class Stack // a stack holds up to 20 ints { private: int stackDS[20]; // integers are stored in array int top; // index of last item pushed public: void init() // initialize index { top = -1; } void push(int var) // place an item on the stack { stackDS[++top] = var; } int pop() // remove an item from the stack { return stackDS[top--]; } }; void main() { Stack stack1; // create a stack object stack1.init(); // initialize it stack1.push(11); // push 3 items onto stack stack1.push(12); stack1.push(13); cout << stack1.pop() << endl; // pop 3 items and display them cout << stack1.pop() << endl; cout << stack1.pop() << endl; }
इस Program में जब हम किसी Stack से Data Item को Push करके वापस Pop करते हैं, तो Data items हमें Reverse Order में प्राप्त होते हैं। हम “C++” में किसी भी Member Variable को उसे Create करते समय ही Initialize नहीं कर सकते हैं। किसी Member Variable को Initialize करने के लिए हमें एक अन्य Member Function लिखना होता है। Member Variable top को Initialize करने के लिए हमें init() function लिखा है जो Member Variable top को –1 Initialize करता है।
जब कोई Stack पूरी तरह से Empty होता है, तब Stack का Top व Bottom एक समान होता है यानी Stack में कोई Item नहीं होता है। इस स्थिति में Member Variable top किसी भी Item को Signify नहीं करता इसलिए इस स्थिति में top का मान –1 Initialize किया गया है।
Stack में किसी Item को Push करने के लिए हमने इस Class में push() Member Function Create किया है। ये Member Function Stack में एक Item Push करता है और top को Increment कर देता है।
चूंकि top को –1 Initialize किया गया है इसलिए ये जरूरी है कि मान Stack में Store होने से पहले top का मान 0 हो जाए, ताकि Store होने वाला मान Index Number 0 पर Store हो। इसलिए हमने top को Pre–Increment किया है। इसी तरह से pop() Function में हमने Value को प्राप्त करने के बाद top को Decrease किया है। यानी हमने top को Post Decrement किया है ताकि Value Pop होने के बाद top का मान Decrease हो और top पिछले Item को Point करे।
An Array Disguised as a Stack
यहां पर हमने Array को एक अलग ही तरीके से Data को Store करने व पुन: प्राप्त करने के लिए Use किया है। Data Array में push() Member Function द्वारा Input होते हैं और pop() Member Function द्वारा Out होते हैं। ये Stack Class एक Array को Class member के रूप में कार्यरूप में परिणित करता है इसलिए User के लिए Data Storage का ये एक बिल्कुल ही अलग तरीका है।
OOP Classes में ये एक सामान्य तरीका है कि Programmer व Data के बीच में एक नया Interface Create किया जाए। यानी किसी भी Data को Access करने के लिए एक Member Function Create किया जाए। ये Member Function Data व Programmer के बीच एक माध्यम का काम करता है। इसीलिए इन Member Functions को Interface कहा जाता है। Windows Application Programming Interface (API) Programming में API Functions Classes व उनके Member Functions को Use करने का एक समूह प्रदान करते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C++ Programming Language in Hindi | Page: 666 | Format: PDF