কম্পিউটার

সি ভাষায় স্ট্যাকের অভিব্যক্তির মূল্যায়ন ব্যাখ্যা কর


স্ট্যাক হল একটি রৈখিক ডেটা স্ট্রাকচার, যেখানে ডেটা ঢোকানো হয় এবং শুধুমাত্র এক প্রান্তে সরিয়ে দেওয়া হয়।

অ্যালগরিদম

নীচে পুশ ( ) -

এর জন্য একটি অ্যালগরিদম দেওয়া হল
  • স্ট্যাক ওভারফ্লো পরীক্ষা করুন।
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]);

স্ট্যাকের প্রয়োগ

আসুন সি ভাষায় স্ট্যাকের অভিব্যক্তির রূপান্তরগুলি বুঝতে পারি।

অভিব্যক্তি - এটি অপারেন্ড এবং অপারেশনের একটি আইনি সমন্বয়।

অভিব্যক্তির প্রকারগুলি

সি ভাষায় তিন ধরনের অভিব্যক্তি রয়েছে যার ভিত্তিতে রূপান্তর এবং মূল্যায়ন করা যেতে পারে। সেগুলি নীচে ব্যাখ্যা করা হয়েছে -

  • ইনফিক্স এক্সপ্রেশন - অপারেটর অপারেন্ডগুলির মধ্যে রয়েছে। উদাহরণস্বরূপ, A+B

  • প্রিফিক্স এক্সপ্রেশন - অপারেটর অপারেন্ডের আগে। উদাহরণস্বরূপ, +AB

  • পোস্টফিক্স এক্সপ্রেশন - অপারেটর অপারেন্ডের পরে। উদাহরণস্বরূপ, AB+

পোস্টফিক্স এক্সপ্রেশনের মূল্যায়ন

অ্যালগরিদম

ইনপুট স্ট্রিংটি বাম থেকে ডানে স্ক্যান করুন৷

প্রতিটি ইনপুট চিহ্নের জন্য,

  • যদি এটি একটি সংখ্যা হয়, তাহলে এটিকে স্ট্যাকের দিকে ঠেলে দিন৷

  • যদি এটি একটি অপারেটর হয়, তাহলে স্ট্যাক থেকে শীর্ষ দুটি বিষয়বস্তু পপ আউট করুন এবং তাদের উপর অপারেটর প্রয়োগ করুন৷ পরে, ফলাফলটিকে স্ট্যাক করার জন্য চাপুন৷

  • যদি ইনপুট প্রতীক '\0' হয়, তাহলে স্ট্যাকটি খালি করুন।

প্রোগ্রাম

পোস্টফিক্স এক্সপ্রেশন -

-এর মূল্যায়নের জন্য C প্রোগ্রামটি নিচে দেওয়া হল
#include<stdio.h>
int top = -1, stack [100];
main ( ){
   char a[50], ch;
   int i,op1,op2,res,x;
   void push (int);
   int pop( );
   int eval (char, int, int);
   printf("enter a postfix expression:");
   gets (a);
   for(i=0; a[i]!='\0'; i++){
      ch = a[i];
      if (ch>='0' && ch<='9')
         push('0');
      else{
         op2 = pop ( );
         op1 = pop ( );
         res = eval (ch, op1, op2);
         push (res);
      }
   }
   x = pop ( );
   printf("evaluated value = %d", x);
   getch ( );
}
void push (int n){
   top++;
   stack [top] = n;
}
int pop ( ){
   int res ;
   res = stack [top];
   top--;
   return res;
}
int eval (char ch, int op1, int op2){
   switch (ch){
      case '+' : return (op1+op2);
      case '-' : return (op1-op2);
      case '*' : return (op1*op2);
      case '/' : return (op1/op2);
   }
}

আউটপুট

যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -

Run 1:
enter a postfix expression:45+
evaluated value = 9
Run 2:
enter a postfix expression: 3 5 2 * +
evaluated value = 13

  1. সি ভাষায় বাছাইয়ের পদ্ধতি ব্যাখ্যা কর

  2. C ভাষায় ক্যারেক্টার অপারেশন ব্যাখ্যা কর

  3. সি ভাষায় ইউনিয়নকে পয়েন্টার ব্যাখ্যা কর

  4. সি ল্যাঙ্গুয়েজে পয়েন্টার এক্সেসিংয়ের ধারণাটি ব্যাখ্যা কর