सीधे मुख्य सामग्री पर जाएं

Stack Data Structure in Hindi / स्टैक डाटा स्ट्रक्चर

Stack एक प्रकार का डाटा स्ट्रक्चर है जो LIFO (Last In First Out) के सिद्धांत पर कार्य करता है. अर्थात stack में जो भी element अंत में प्रवेश करता है वो element सबसे पहले बाहर आता है, इस लिए इसे LIFO डाटा स्ट्रक्चर कहतें हैं.
उदाहरण :
  • एक के ऊपर एक रखे प्लेट. जो प्लेट ऊपर होगा वो पहले उठाया जायेगा और कोई प्लेट रखा जायेगा तो वो ऊपर रखा जायेगा.
  • एक के ऊपर एक रखे ताश के पत्ते
स्टैक का चित्रण:



उपरोक्त चित्र में स्टैक को array के माध्यम से प्रदर्शित किया गया है. यहाँ पर:
  • MAXSIZE : स्टैक में प्रवेश कर सकने वाले elements की अधिकतम संख्या है. जो कि यहाँ पर 5 है.
  • TOP(Top of Stack) : यह स्टैक के सबसे टॉप पर स्थित element को इंगित करता है.
  • ध्यान रहे कि स्टैक में 5 elements है जिनका index 0 से 4 तक array element के द्वारा प्रदर्शित किये गये हैं.

स्टैक ऑपरेशन:
१. PUSH (पुश) : इस ऑपरेशन के द्वारा स्टैक के टॉप पर नया element प्रवेश करता है.
२. POP(पॉप) : इस ऑपरेशन के द्वारा हम स्टैक के टॉप element को डिलीट करते हैं.

नोट: जब स्टैक में MAXSIZE, elements प्रवेश कर जातें हैं और उसके बाद यदि हम कोई नया element को प्रवेश कराने का प्रयास करतें हैं तो वो element प्रवेश नहीं करेगा. इस परिघटना को stack overflow (स्टैक ओवरफ्लो) कहते हैं. जब भी हम स्टैक में कोई नया element प्रवेश कराते है तो पहले ये जाँच कर लेते हैं कि स्टैक में खाली स्थान अवश्य हो.
इसी प्रकार यदि हम pop ऑपरेशन करें और स्टैक में एक भी element उपस्थित ना हो तो pop ऑपरेशन सम्पादित नहीं होगा. इस परिघटना को stack underflow (स्टैक अंडरफ्लो) कहतें हैं. जब भी हम स्टैक पर pop ऑपरेशन करते है तो पहले ये जांच लेतें है कि स्टैक में एक element अवश्य हो.

Push/पुश ऑपरेशन सम्पादित करने के चरण:  स्टैक में element प्रवेश / push / पुश करने के चरण इस प्रकार हैं-
  • सबसे पहले स्टैक ओवरफ्लो की जांच करतें हैं .
  • यदि स्टैक ओवरफ्लो होता है अर्थात स्टैक में खली स्थान नही है तो, element को पुश नही किया जा सकता.
  • और यदि स्टैक ओवरफ्लो नहीं है तो हम TOP का मान में 1 जोड़ देतें हैं जिससे TOP स्टैक में खाली स्थान को इंगित करे.
  • अब TOP द्वारा खाली स्थान में element इन्सर्ट कर देतें हैं.



if( TOP >= MAXSIZE-1 ){
printf("Stack Overflow\n");
}
else{
TOP = TOP + 1;
stack[TOP] = num;
}

व्याख्या: चरण 1 में हम सबसे पहले स्टैक ओवरफ्लो की जांच करेंगें, अगर TOP >= MAXSIZE-1, अर्थात TOP का मान स्टैक के MAXSIZE से बड़ा या बराबर है तो स्टैक में कोई और element प्रवेश नहीं कर सकता. चरण 2 में overflow की जांच अगर सत्य होती है तो स्क्रीन पर "Stack Overflow" प्रिंट करेगा. अगर चरण 2 में overflow नहीं होता है तो चरण 6 run करेगा और TOP का मान 1 बढ़ जायेगा. चरण 7 में TOP पर element प्रवेश कर जायेगा.

Pop/पॉप ऑपरेशन सम्पादित करने के चरण:  स्टैक से element डिलीट/पॉप करने के चरण इस प्रकार हैं-
  • सबसे पहले स्टैक अंडरफ्लो की जांच करतें हैं .
  • यदि स्टैक अंडरफ्लो होता है अर्थात स्टैक में कोई element उपस्थित नहीं इसलिए pop ऑपरेशन सम्पादित नहीं किया जा सकता.
  • और यदि स्टैक अंडरफ्लो नहीं है तो हम temp में स्टैक के टॉप element को स्टोर कर लेते है.
  • अब TOP के मान से 1 घटा देतें हैं जिससे कि TOP ऊपर से दुसरे टॉप element को इंगित करने लगे.
  • अब temp के मान को return कर देतें हैं.



if( TOP == -1 ){
printf("Stack Underflow\n");
}
else{
temp = stack[TOP];
TOP = TOP - 1;
return temp;
}

व्याख्या: चरण 1 में हम सबसे पहले स्टैक अंडरफ्लो की जांच करेंगें, अगर TOP == -1 कथन सत्य होता है तो स्टैक में कोई भी element उपस्थित नहीं है.चरण 2 में underflow की जांच अगर सत्य होती है तो स्क्रीन पर "Stack Underflow" प्रिंट करेगा. अगर चरण 2 में underflow नहीं होता है तो temp वेरिएबल में स्टैक के टॉप element को स्टोर कर लेंगे. चरण 7 में TOP का मान 1 घटा दिया गया है जिससे वो अगले टॉप element को इंगित करने लगे. चरण 8 में स्टैक के टॉप पर उपस्थित element जो कि temp variable में स्टोर है तो return कर दिया जायेगा.

स्टैक ऑपरेशन का चित्रण:

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट