Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी भाषा में स्टैक के भावों के रूपांतरण की व्याख्या करें

स्टैक एक रैखिक डेटा संरचना है, जहां डेटा केवल एक छोर पर डाला और निकाला जाता है।

एल्गोरिदम

पुश ( ) . के लिए एक एल्गोरिथम नीचे दिया गया है -

  • स्टैक ओवरफ्लो की जांच करें।
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' है, तो स्टैक की सामग्री को तब तक पॉप आउट करें जब तक कि यह खाली न हो जाए।

स्टैक की सहायता से इंफिक्स का पोस्ट फिक्स में रूपांतरण नीचे दिया गया है -

सी भाषा में स्टैक के भावों के रूपांतरण की व्याख्या करें


सी भाषा में स्टैक के भावों के रूपांतरण की व्याख्या करें


  1. C भाषा में कैरेक्टर ऑपरेशंस की व्याख्या करें

    वर्ण (ए-जेड (या) ए-जेड), अंक (0-9), एक सफेद स्थान, या सी प्रोग्रामिंग भाषा में एक विशेष प्रतीक हो सकता है। घोषणा सी प्रोग्रामिंग में कैरेक्टर ऑपरेशंस के लिए घोषणा निम्नलिखित है - char a= ‘A’; using a character constant. चरित्र इनपुट / आउटपुट फ़ंक्शन कैरेक्टर इनपुट/आउटपुट फंक्शन्स को नी

  1. C भाषा में यूनियन टू पॉइंटर को समझाएं

    एक यूनियन को मेमोरी लोकेशन कहा जाता है, जिसे विभिन्न प्रकार के डेटा के कई वेरिएबल द्वारा साझा किया जाता है। सिंटैक्स वाक्य रचना इस प्रकार है - union uniontag{    datatype member 1;    datatype member 2;    ----    ----    datatype member n; }; उदाह

  1. C भाषा में पॉइंटर एक्सेसिंग की अवधारणा की व्याख्या करें

    पॉइंटर एक वेरिएबल है जो दूसरे वेरिएबल के एड्रेस को स्टोर करता है। सूचक घोषणा, आरंभीकरण और पहुंच निम्नलिखित कथन पर विचार करें - int qty = 179; सूचक घोषित करना int *p; p एक पॉइंटर वेरिएबल है जो दूसरे इंटीजर वेरिएबल का पता रखता है। सूचक का प्रारंभ एड्रेस ऑपरेटर (&) का उपयोग पॉइंटर वेरिएबल को इनिशि