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