Untitled
unknown
plain_text
2 years ago
2.2 kB
8
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define STACK_SIZE 100
typedef struct {
int data[STACK_SIZE];
int top;
} Stack;
void initializeStack(Stack *stack) {
stack->top = -1;
}
int isEmpty(Stack *stack) {
return stack->top == -1;
}
int isFull(Stack *stack) {
return stack->top == STACK_SIZE - 1;
}
void push(Stack *stack, int value) {
if (!isFull(stack)) {
stack->top++;
stack->data[stack->top] = value;
}
}
int pop(Stack *stack) {
if (!isEmpty(stack)) {
int value = stack->data[stack->top];
stack->top--;
return value;
}
return 0; // Return some default value (0) indicating an error
}
int evaluatePostfixExpression(const char *expression) {
Stack stack;
initializeStack(&stack);
int i = 0;
char *token;
const char delimiter[] = ", ";
token = strtok(expression, delimiter);
while (token != NULL) {
if (isdigit(token[0])) {
push(&stack, atoi(token));
} else {
int operand2 = pop(&stack);
int operand1 = pop(&stack);
switch (token[0]) {
case '+':
push(&stack, operand1 + operand2);
break;
case '-':
push(&stack, operand1 - operand2);
break;
case '*':
push(&stack, operand1 * operand2);
break;
case '/':
push(&stack, operand1 / operand2);
break;
// Add other operators here if needed
}
}
token = strtok(NULL, delimiter);
}
return pop(&stack);
}
int main() {
char expression[100];
printf("Enter the postfix expression: ");
fgets(expression, sizeof(expression), stdin);
// Remove the trailing newline character from fgets
int len = strlen(expression);
if (len > 0 && expression[len - 1] == '\n') {
expression[len - 1] = '\0';
}
int result = evaluatePostfixExpression(expression);
printf("Result: %d\n", result);
return 0;
}
Editor is loading...