Upload files to "DS/C/Lab/Week5"

This commit is contained in:
Aadit Agrawal 2024-09-03 00:26:38 +05:30
parent 0589cce66a
commit 0cdc830d54
4 changed files with 277 additions and 0 deletions

View file

@ -0,0 +1,71 @@
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_SIZE 100
char stack[MAX_SIZE];
int top = -1;
void push(char item) {
if (top >= MAX_SIZE - 1) {
printf("Stack Overflow\n");
return;
}
stack[++top] = item;
}
char pop() {
if (top < 0) {
printf("Stack Underflow\n");
return -1;
}
return stack[top--];
}
int precedence(char symbol) {
switch (symbol) {
case '^': return 3;
case '*':
case '/': return 2;
case '+':
case '-': return 1;
default: return 0;
}
}
void infixToPostfix(char infix[], char postfix[]) {
int i, j = 0;
char symbol, next;
for (i = 0; i < strlen(infix); i++) {
symbol = infix[i];
if (isalnum(symbol)) {
postfix[j++] = symbol;
} else if (symbol == '(') {
push(symbol);
} else if (symbol == ')') {
while ((next = pop()) != '(') {
postfix[j++] = next;
}
} else {
while (top > -1 && precedence(stack[top]) >= precedence(symbol)) {
postfix[j++] = pop();
}
push(symbol);
}
}
while (top > -1) {
postfix[j++] = pop();
}
postfix[j] = '\0';
}
int main() {
char infix[MAX_SIZE], postfix[MAX_SIZE];
printf("Enter infix expression: ");
fgets(infix, MAX_SIZE, stdin);
infix[strcspn(infix, "\n")] = 0; // Remove newline if present
infixToPostfix(infix, postfix);
printf("Postfix expression: %s\n", postfix);
return 0;
}