स्टैक एक रैखिक डेटा संरचना है, जहां डेटा केवल एक छोर पर डाला और निकाला जाता है।
एल्गोरिदम
पुश ( ) . के लिए एक एल्गोरिथम नीचे दिया गया है -
- स्टैक ओवरफ्लो की जांच करें।
if (top = = n-1) printf("stack over flow");
- अन्यथा, स्टैक में एक तत्व डालें।
top ++ a[top] = item
पॉप ( ) . के लिए एल्गोरिथम नीचे दिया गया है -
- स्टैक अंडरफ्लो की जांच करें।
if (top = = -1) printf("stack under flow");
अन्यथा, स्टैक से किसी तत्व को हटा दें।
item = a[top] top --
नीचे प्रदर्शन के लिए एक एल्गोरिथम दिया गया है ( ) -
if (top == -1) printf ("stack is empty");
अन्यथा, नीचे दिए गए एल्गोरिथम का पालन करें।
for (i=0; i<top; i++) printf ("%d", a[i]);
स्टैक का अनुप्रयोग
आइए हम सी भाषा में स्टैक के भावों के रूपांतरण को समझते हैं।
अभिव्यक्ति - यह ऑपरेंड और संचालन का कानूनी संयोजन है।
अभिव्यक्ति के प्रकार
C भाषा में तीन प्रकार के भाव होते हैं जिन पर रूपांतरण और मूल्यांकन किया जा सकता है। उन्हें नीचे समझाया गया है -
-
इंफिक्स एक्सप्रेशन - ऑपरेटर ऑपरेंड के बीच में होता है। उदाहरण के लिए, ए+बी
-
उपसर्ग अभिव्यक्ति - ऑपरेटर ऑपरेंड से पहले है। उदाहरण के लिए, +AB
-
पोस्टफिक्स एक्सप्रेशन - ऑपरेटर ऑपरेंड के बाद होता है। उदाहरण के लिए, AB+
इंफिक्स को पोस्टफिक्स और इंफिक्स को प्रीफिक्स में बदलने के बारे में नीचे बताया गया है -
Infix to postfix Infix to prefix A+ B*C A+ B*C A+ BC * A+ *BC ABC* + +A*BC
उदाहरण के लिए,
A+B*C / D-E+F इन्फिक्स को पोस्टफिक्स और प्रीफिक्स में बदलें।
Infix to prefix Infix to postfix A +B*C / D-E+F A +B*C / D-E+F A +*BC / D-E+F A +BC* / D-E+F A + / *BCD -E+F A +BC*D /-E+F +A /*BCD -E +F ABC *D /+ -E+F -+A/*BCDE +F ABC *D/ +E- +F + - +A/*BCDEF ABC *D / +E –F+
एल्गोरिदम
इनपुट स्ट्रिंग को बाएं से दाएं स्कैन करें और नीचे दिए गए चरणों का पालन करें -
-
चरण 1 - अगर इनपुट सिंबल एक ऑपरेंड है, तो इसे मॉनिटर पर प्रिंट करें।
-
चरण 2 - यदि इनपुट प्रतीक '(' है, तो इसे स्टैक पर पुश करें।
-
चरण 3 - यदि इनपुट प्रतीक ')' है, तो स्टैक की सभी सामग्री को तब तक पॉप आउट करें जब तक आपको '('.
प्राप्त न हो जाए। -
चरण 4 - यदि इनपुट प्रतीक एक ऑपरेटर है, तो वर्तमान इनपुट प्रतीक के साथ स्टैक के शीर्ष पर ऑपरेटर की प्राथमिकता के साथ जांचें।
यदि स्टैक के शीर्ष की सर्वोच्च प्राथमिकता वर्तमान प्रतीक की प्राथमिकता से अधिक या उसके बराबर है, तो स्टैक की सामग्री को पॉप आउट करें और वर्तमान प्रतीक को स्टैक में डालें।
अन्यथा, ऑपरेटर को स्टैक पर पुश करें।
-
चरण 5 - यदि इनपुट प्रतीक '\0' है, तो स्टैक की सामग्री को तब तक पॉप आउट करें जब तक कि यह खाली न हो जाए।
स्टैक की सहायता से इंफिक्स का पोस्ट फिक्स में रूपांतरण नीचे दिया गया है -