Saran Dsa Ass3
Saran Dsa Ass3
Name: Saran P
Reg No: 23BAI0022
QUESTION-1A
CODE:-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Driver code
int main() {
char infix_expression[100];
printf("Enter infix expression: ");
if (fgets(infix_expression, sizeof(infix_expression), stdin) != NULL) {
// Remove trailing newline character if present
size_t length = strlen(infix_expression);
if (length > 0 && infix_expression[length - 1] == '\n') {
infix_expression[length - 1] = '\0';
}
infix_to_postfix(infix_expression);
} else {
printf("Error reading input\n");
}
return 0;
}
OUTPUT:-
QUESTION-1B
CODE:-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Reverse a string
void reverse_string(char *str) {
int length = strlen(str);
char reversed[length + 1];
int j = length;
reversed[j--] = '\0';
for (int i = 0; i < length; i++) {
reversed[j--] = str[i];
}
strcpy(str, reversed);
}
int main() {
char infix_expression[MAX_SIZE];
printf("Enter infix expression: ");
if (fgets(infix_expression, sizeof(infix_expression), stdin) != NULL) {
// Remove trailing newline character if present
size_t len = strlen(infix_expression);
if (len > 0 && infix_expression[len - 1] == '\n') {
infix_expression[len - 1] = '\0';
}
infix_to_prefix(infix_expression);
printf("The prefix expression is: %s\n", infix_expression);
} else {
printf("Error reading input\n");
}
return 0;
}
OUTPUT:-
QUESTION-2
CODE:-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Stack implementation
int stack[MAX_SIZE];
int top = -1;
switch(symbol) {
case '+': result = operand1 + operand2; break;
case '-': result = operand1 - operand2; break;
case '*': result = operand1 * operand2; break;
case '/': result = operand1 / operand2; break;
default:
printf("Error: Unknown operator %c\n", symbol);
return -1;
}
push(result);
}
i++;
}
// There should be exactly one item in the stack if the expression is valid
if (top != 0) {
printf("Error: Invalid postfix expression\n");
return -1;
}
result = pop();
return result;
}
int main() {
char expression[MAX_SIZE];
printf("Enter postfix expression: ");
if (fgets(expression, MAX_SIZE, stdin) != NULL) {
// Remove trailing newline character if present
size_t len = strlen(expression);
if (len > 0 && expression[len - 1] == '\n') {
expression[len - 1] = '\0';
}
OUTPUT:-