4. Data Structure Program | Read Now
Data Structure Lab Program -04
- Design, Develop and Implement a Program in C for converting an Infix Expression to Postfix Expression. Program should support for both parenthesizedand free parenthesized expressions with the operators: +, -, *, /, %(Remainder), ^(Power) and alphanumeric operands.
Program-4 code [infinxtopostfix.c]
#include<stdio.h>
#include<string.h>
int F(char symbol)
{
switch (symbol)
{
case '+':
case '-':return 2;
case '*':
case '/':
case '%':return 4;
case '^':
case '$':return 5;
case '(':return 0;
case '#':return -1;
default :return 8;
}
}
int G(char symbol)
{
switch (symbol)
{
case '+':
case '-':return 1;
case '*':
case '/':
case '%':return 3;
case '^':
case '$':return 6;
case '(':return 3;
case ')':return 0;
default :return 7;
}
}
void infix_postfix(char infix[], char postfix[])
{
int top=-1, j=0, i;
char s[30], symbol;
s[++top] = '#';
for(i=0; i < strlen(infix); i++)
{
symbol = infix[i];
while (F(s[top]) > G(symbol))
{
postfix[j] = s[top--];
j++;
}
if(F(s[top]) != G(symbol))
s[++top] = symbol;
else
top--;
}
while(s[top] != '#')
postfix[j++] = s[top--];
postfix[j] = '\0';
}
void main()
{
char infix[20], postfix[20];
printf("\nEnter a valid infix expression\n") ;
scanf ("%s", infix) ;
infix_postfix (infix, postfix);
printf("\nThe infix expression is:\n");
printf ("%s",infix);
printf("\nThe postfix expression is:\n");
printf ("%s",postfix) ;
}
#include<stdio.h>
#include<string.h>
int F(char symbol)
{
switch (symbol)
{
case '+':
case '-':return 2;
case '*':
case '/':
case '%':return 4;
case '^':
case '$':return 5;
case '(':return 0;
case '#':return -1;
default :return 8;
}
}
int G(char symbol)
{
switch (symbol)
{
case '+':
case '-':return 1;
case '*':
case '/':
case '%':return 3;
case '^':
case '$':return 6;
case '(':return 3;
case ')':return 0;
default :return 7;
}
}
void infix_postfix(char infix[], char postfix[])
{
int top=-1, j=0, i;
char s[30], symbol;
s[++top] = '#';
for(i=0; i < strlen(infix); i++)
{
symbol = infix[i];
while (F(s[top]) > G(symbol))
{
postfix[j] = s[top--];
j++;
}
if(F(s[top]) != G(symbol))
s[++top] = symbol;
else
top--;
}
while(s[top] != '#')
postfix[j++] = s[top--];
postfix[j] = '\0';
}
void main()
{
char infix[20], postfix[20];
printf("\nEnter a valid infix expression\n") ;
scanf ("%s", infix) ;
infix_postfix (infix, postfix);
printf("\nThe infix expression is:\n");
printf ("%s",infix);
printf("\nThe postfix expression is:\n");
printf ("%s",postfix) ;
}
#include<stdio.h> #include<string.h> int F(char symbol) { switch (symbol) { case '+': case '-':return 2; case '*': case '/': case '%':return 4; case '^': case '$':return 5; case '(':return 0; case '#':return -1; default :return 8; } } int G(char symbol) { switch (symbol) { case '+': case '-':return 1; case '*': case '/': case '%':return 3; case '^': case '$':return 6; case '(':return 3; case ')':return 0; default :return 7; } } void infix_postfix(char infix[], char postfix[]) { int top=-1, j=0, i; char s[30], symbol; s[++top] = '#'; for(i=0; i < strlen(infix); i++) { symbol = infix[i]; while (F(s[top]) > G(symbol)) { postfix[j] = s[top--]; j++; } if(F(s[top]) != G(symbol)) s[++top] = symbol; else top--; } while(s[top] != '#') postfix[j++] = s[top--]; postfix[j] = '\0'; } void main() { char infix[20], postfix[20]; printf("\nEnter a valid infix expression\n") ; scanf ("%s", infix) ; infix_postfix (infix, postfix); printf("\nThe infix expression is:\n"); printf ("%s",infix); printf("\nThe postfix expression is:\n"); printf ("%s",postfix) ; }
Data Structure -How to Run this Program
- Step-1: Copy the above code
- Step-2: Paste it in any C compiler [Codeblocks/Dev C++/ VsCode etc]
- Step-3: Save the file name with .C extension
- Step-4: Compile the program
- Step-5: Run the program
- Step-6: Program Execution Successful