जावा स्टैक वर्ग वेक्टर वर्ग का विस्तार करता है। यह आपको नए तत्व बनाने, स्टैक में एक तत्व देखने, स्टैक में एक तत्व को अपडेट करने और स्टैक से सभी तत्वों को हटाने की सुविधा देता है। स्टैक डेटा को फर्स्ट-इन-लास्ट-आउट (FILO) क्रम में संसाधित करता है। इसका मतलब है कि आप केवल स्टैक के ऊपर से आइटम जोड़ या हटा सकते हैं।
स्टैक डेटा संरचना में पाँच प्राथमिक विधियाँ हैं। हालाँकि, जावा स्टैक वर्ग के पास 40 से अधिक अन्य विधियों तक पहुँच है, जो इसे वेक्टर वर्ग से विरासत में मिली है।
जावा में एक स्टैक बनाना
ढेर वर्ग एक ही कंस्ट्रक्टर है जो आपको एक खाली स्टैक बनाने की अनुमति देता है। प्रत्येक स्टैक में एक प्रकार का तर्क होता है, जो उस डेटा के प्रकार को निर्धारित करता है जिसे वह संग्रहीत करेगा।
आयात java.util. ढेर;
जनताकक्षामुख्य{
जनतास्थिरशून्यमुख्य(स्ट्रिंग [] तर्क){
// एक स्टैक बनाएं
ढेरग्राहक = नया ढेर ();
}
}
उपरोक्त कोड एक स्टैक डेटा संरचना बनाता है जिसे कहा जाता है ग्राहकों जो स्ट्रिंग मानों को संग्रहीत करता है।
एक स्टैक को आबाद करना
स्टैक वर्ग की पाँच प्राथमिक विधियों में से एक है: धकेलना() तरीका। यह एक एकल आइटम लेता है जिसमें स्टैक के समान डेटा प्रकार होता है और उस आइटम को स्टैक के शीर्ष पर धकेलता है।
// स्टैक को पॉप्युलेट करें
Customers.push ("जेन डो");
Customers.push ("जॉन डो");
Customers.push ("पैट्रिक विलियम्स");
Customers.push ("पॉल स्मिथ");
Customers.push ("एरिक रो");
Customers.push ("एला जोन्स");
Customers.push ("जेसिका ब्राउन");
ऊपर दिया गया कोड ग्राहकों के स्टैक को सात आइटमों से भर देता है। यह प्रत्येक नए आइटम को स्टैक के शीर्ष पर धकेलता है। तो, ग्राहक स्टैक के शीर्ष पर आइटम जेसिका ब्राउन है। और आप स्टैक का उपयोग करके इसकी पुष्टि कर सकते हैं झांकना () तरीका। झांकना () विधि कोई तर्क नहीं लेती है। यह ऑब्जेक्ट को स्टैक के शीर्ष पर बिना हटाए लौटाता है।
// स्टैक के शीर्ष पर ऑब्जेक्ट देखें
System.out.println (Customers.peek ());
उपरोक्त कोड कंसोल पर निम्न आउटपुट देता है:
जेसिका ब्राउन
एक स्टैक में आइटम देखें
स्टैक डेटा संरचना काफी प्रतिबंधित है कि यह आपको इसके डेटा के साथ कैसे इंटरैक्ट करने की अनुमति देता है। आपको मुख्य रूप से स्टैक का उपयोग इसके शीर्षतम आइटम के माध्यम से करना चाहिए। हालाँकि, आप मनमाने तत्वों तक पहुँचने के लिए वेक्टर वर्ग से विरासत में मिली विधियों का भी उपयोग कर सकते हैं। इस तरह के तरीकों में शामिल हैं elementAt और removeElementAt।
स्टैक की सामग्री का अवलोकन प्राप्त करने का सबसे आसान तरीका बस इसे प्रिंट करना है। एक स्टैक ऑब्जेक्ट पास करें System.out.println और स्टैक की toString() विधि एक अच्छा सारांश तैयार करेगी:
// स्टैक के सभी तत्वों को देखें
System.out.println (ग्राहक);
उपरोक्त कोड कंसोल पर निम्न आउटपुट प्रिंट करता है:
[जेन डो, जॉन डो, पैट्रिक विलियम्स, पॉल स्मिथ, एरिक रोवे, एला जोन्स, जेसिका ब्राउन]
एक स्टैक में किसी आइटम की स्थिति की खोज करना
यदि आप स्टैक में किसी आइटम को जानते हैं, तो आप स्टैक के शीर्ष के सापेक्ष उसकी अनुक्रमणिका स्थिति या उसकी स्थिति की पहचान कर सकते हैं। के सूचकांक() विधि स्टैक में एक आइटम लेती है और अपनी अनुक्रमणिका स्थिति लौटाती है। ध्यान रखें कि एक स्टैक अपने आइटम को शून्य पर अनुक्रमित करना शुरू कर देता है।
// एक आइटम इंडेक्स स्थिति खोजें
System.out.println (Customers.indexOf ("जेन डो"));
उपरोक्त कोड कंसोल पर निम्न आउटपुट प्रिंट करता है:
0
तलाशी() विधि स्टैक वर्ग की प्राथमिक विधियों में से एक है। यह स्टैक के शीर्ष के सापेक्ष एक आइटम स्थिति देता है, जहां स्टैक के शीर्ष पर स्थित आइटम की स्थिति नंबर एक होती है।
System.out.println (ग्राहक खोज ("जेन डो"));
उपरोक्त कोड कंसोल पर निम्न आउटपुट प्रिंट करता है:
7
यदि आप आपूर्ति करते हैं तलाशी() या के सूचकांक() किसी आइटम के साथ विधियां जो स्टैक में नहीं हैं, वे एक नकारात्मक वापस कर देंगे।
System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
उपरोक्त कोड कंसोल पर निम्न आउटपुट प्रिंट करता है:
-1
-1
एक स्टैक में आइटम अपडेट करना
आप केवल स्टैक के शीर्ष पर किसी आइटम में हेरफेर कर सकते हैं। इसलिए, यदि आप किसी ऐसे तत्व को अपडेट करना चाहते हैं जो स्टैक के शीर्ष पर नहीं है, तो आपको इसके ऊपर की सभी वस्तुओं को पॉप करना होगा। पॉप() विधि स्टैक की प्राथमिक विधियों में से एक है। पॉप() विधि कोई तर्क नहीं लेती है। यह स्टैक के शीर्ष पर आइटम को हटा देता है और उसे वापस कर देता है।
// किसी ऑब्जेक्ट को अपडेट करें
ग्राहक.पॉप ();
ग्राहक.पॉप ();
Customers.push ("एला जेम्स");
Customers.push ("जेसिका ब्राउन");
System.out.println (ग्राहक);
उपरोक्त कोड कंसोल पर निम्न आउटपुट प्रिंट करता है:
[जेन डो, जॉन डो, पैट्रिक विलियम्स, पॉल स्मिथ, एरिक रो, एला जेम्स, जेसिका ब्राउन]
जैसा कि आप आउटपुट से देख सकते हैं, कोड एला के उपनाम को जेम्स में अपडेट करता है। इसमें एक प्रक्रिया शामिल है जो स्टैक से आइटम को तब तक पॉप करती है जब तक आप लक्ष्य वस्तु पर नहीं पहुंच जाते। यह तब लक्ष्य वस्तु को पॉप करता है; इसे अद्यतन करता है; और लक्ष्य वस्तु के शीर्ष पर मौजूद वस्तुओं के साथ इसे वापस स्टैक पर धकेलता है। हर बार जब आप अपने स्टैक में किसी आइटम को अपडेट करना चाहते हैं, तो आपको एक प्रोग्राम का उपयोग करना होगा जो ऊपर वाले की तरह संचालन करता है।
किसी आइटम को स्टैक से हटाना
स्टैक डेटा संरचना से किसी एक आइटम को हटाने के लिए, आप फिर से पॉप () विधि का उपयोग कर सकते हैं। यदि आप जिस आइटम को हटाना चाहते हैं वह शीर्ष पर नहीं है, तो आप वांछित आइटम तक पहुंचने तक शीर्ष पर आइटम पॉप कर सकते हैं।
एक स्टैक में सभी वस्तुओं को हटाना
स्टैक से सभी तत्वों को हटाने के लिए, आप a. का उपयोग कर सकते हैं जावा जबकि लूप पॉप () विधि के साथ तत्वों को एक बार में हटाने के लिए। हालांकि, एक अधिक कुशल दृष्टिकोण का उपयोग करना है स्पष्ट() तरीका। स्पष्ट() विधि वह है जिसे स्टैक वर्ग वेक्टर वर्ग से विरासत में मिला है। यह कोई तर्क नहीं लेता है, कुछ भी नहीं देता है, लेकिन केवल स्टैक डेटा संरचना के सभी तत्वों को हटा देता है।
// स्टैक में सभी आइटम हटाएं
ग्राहक। स्पष्ट ();
System.out.println (ग्राहक खाली ());
उपरोक्त कोड ग्राहक स्टैक में सभी आइटम हटा देता है। यह तब का उपयोग करता है खाली() यह जांचने की विधि कि क्या स्टैक खाली है। खाली() जावा स्टैक क्लास की एक और प्राथमिक विधि है। यह कोई तर्क नहीं लेता है और एक बूलियन मान देता है। यदि स्टैक खाली है और अन्यथा गलत है तो यह विधि सत्य हो जाती है।
उपरोक्त कोड कंसोल पर निम्न आउटपुट प्रिंट करता है:
सच
स्टैक डेटा संरचना के लिए व्यावहारिक अनुप्रयोग
स्टैक डेटा संरचना बहुत ही प्रतिबंधात्मक है। यह डेटा प्रोसेसिंग में अन्य डेटा संरचनाओं की तरह अधिक लचीलापन प्रदान नहीं करता है। यह सवाल पूछता है: आपको स्टैक डेटा संरचना का उपयोग कब करना चाहिए?
स्टैक डेटा संरचना उन अनुप्रयोगों के लिए एक आदर्श फिट है जिन्हें रिवर्स ऑर्डर में डेटा प्रोसेसिंग की आवश्यकता होती है। इसमे शामिल है:
- एक एप्लिकेशन जो जांचता है कि कोई शब्द पैलिंड्रोम है या नहीं।
- एक एप्लिकेशन जो दशमलव संख्याओं को बाइनरी नंबरों में परिवर्तित करता है।
- एप्लिकेशन जो उपयोगकर्ताओं को पूर्ववत करने की अनुमति देते हैं।
- ऐसे गेम जो उपयोगकर्ता को पिछली चालों पर वापस जाने की अनुमति देते हैं, जैसे कि शतरंज का खेल।