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

