Write a C program to evaluate a postfix expression using a stack.

 #include <stdio.h>

#include <stdlib.h>

#include <ctype.h>

#include <string.h>

#include <math.h>


#define MAX 100


// Stack implementation

int stack[MAX];

int top = -1;


// Push function

void push(int value) {

    if (top == MAX - 1) {

        printf("Stack overflow!\n");

        exit(1);

    }

    stack[++top] = value;

}


// Pop function

int pop() {

    if (top == -1) {

        printf("Stack underflow!\n");

        exit(1);

    }

    return stack[top--];

}


// Function to evaluate postfix expression

int evaluatePostfix(char* exp) {

    for (int i = 0; exp[i]; i++) {

        char ch = exp[i];


        if (isspace(ch)) {

            continue;

        }

        else if (isdigit(ch)) {

            // Convert char digit to int and push

            push(ch - '0');

        }

        else {

            int val2 = pop();

            int val1 = pop();


            switch (ch) {

                case '+': push(val1 + val2); break;

                case '-': push(val1 - val2); break;

                case '*': push(val1 * val2); break;

                case '/': push(val1 / val2); break;

                case '^': push(pow(val1, val2)); break;

                default:

                    printf("Invalid operator: %c\n", ch);

                    exit(1);

            }

        }

    }

    return pop();  // Final result

}


// Main function

int main() {

    char expression[MAX];


    printf("Enter a postfix expression (e.g., 231*+9-): ");

    scanf("%s", expression);


    int result = evaluatePostfix(expression);

    printf("Result = %d\n", result);


    return 0;

}

Output:




Comments