23bcs139_lab_2
23bcs139_lab_2
#include <stdio.h>
#include <stdlib.h>
while (isEmpty(top) == 0)
{
printf("%c : %d\n", pop(stack, &top), precedence(stack[top]));
}
}
int main(void)
{
char expression[size];
printprecedence(expression);
return 0;
}
2. Write a C program to convert a given infix expression to its postfix
equivalent using the stack.
#include<stdio.h>
#include<ctype.h>
char stack[100];
int top = -1;
void push(char x)
{
stack[++top] = x;
}
char pop()
{
if(top == -1)
return -1;
else
return stack[top--];
}
int priority(char x)
{
if(x == '(')
return 0;
if(x == '+' || x == '-')
return 1;
if(x == '*' || x == '/')
return 2;
return 0;
}
int main()
{
char exp[100];
char *e, x;
printf("Enter the expression : ");
scanf("%s",exp);
printf("\n");
e = exp;
while(*e != '\0')
{
if(isalnum(*e))
printf("%c",*e);
else if(*e == '(')
push(*e);
else if(*e == ')')
{
while((x = pop()) != '(')
printf("%c", x);
}
else
{
while(priority(stack[top]) >= priority(*e))
printf("%c",pop());
push(*e);
}
e++;
}
while(top != -1)
{
printf("%c",pop());
}return 0;
}
3. Using stack data structure, write a C program to evaluate postfix
expression provided by the user.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
switch (expression[i]) {
case '+':
push(stack, &top, operand1 + operand2);
break;
case '-':
push(stack, &top, operand1 - operand2);
break;
case '*':
push(stack, &top, operand1 * operand2);
break;
case '/':
push(stack, &top, operand1 / operand2);
break;
default:
printf("Invalid operator\n");
exit(EXIT_FAILURE);
}
}
}
int main() {
char expression[MAX_SIZE];
return 0;
}