#include<stdio.h>
#include<ctype.h>
void push(char *,int *,char []);
char pop(int *,char []);
void display(int *,char []);
int precedence(char);
void in_to_post(char[],char []);
main()
{
char infix[50],postfix[50];
printf("\n..ENTER THE INPUT STRING..");
scanf("%s",infix);
printf("\n..THE POSTFIX FORMAT IS GENERATED AND YOU CAN SEE THE SEQUENCE OF STACK..\n");
in_to_post(infix,postfix);
}
void push(char *symbol,int *top,char s[50])
{
s[++(*top)]=*symbol;
}
char pop(int *top,char s[50])
{
return s[(*top)--];
}
void display(int *top,char s[50])
{
int i;
for(i=*top;i>=0;i--)
{
printf("%c",s[i]);
}
}
int precedence(char symbol)
{
switch(symbol)
{
case '+':
return 1;
case '-':
return 1;
case '*':
return 2;
case '/':
return 2;
case '^':
return 3;
case '(':
return -1;
}
}
void in_to_post(char infix[50],char postfix[50])
{
int i;
char symbol,x;
char s[50];
int top=-1;
int j=-1;
for(i=0;infix[i]!='\0';i++)
{
symbol=infix[i];
if(isalpha(symbol))
{
postfix[++j]=symbol;
}
else
{
if(top==-1)
{
push(&symbol,&top,s);
}
else
{
if(symbol==')')
{
x=pop(&top,s);
while(x!='(')
{
postfix[++j]=x;
x=pop(&top,s);
}
}
else
{
if(symbol=='(')
{
push(&symbol,&top,s);
}
else
{
while(precedence(symbol)<=precedence(s[top]))
{
postfix[++j]=pop(&top,s);
}
push(&symbol,&top,s);
}
}
}
}
printf("\n");
display(&top,s);
}
while(top!=-1)
{
postfix[++j]=pop(&top,s);
}
postfix[++j]='\0';
printf("\nThe post fix expression is : ");
printf("\n%s",postfix);
}
#include<ctype.h>
void push(char *,int *,char []);
char pop(int *,char []);
void display(int *,char []);
int precedence(char);
void in_to_post(char[],char []);
main()
{
char infix[50],postfix[50];
printf("\n..ENTER THE INPUT STRING..");
scanf("%s",infix);
printf("\n..THE POSTFIX FORMAT IS GENERATED AND YOU CAN SEE THE SEQUENCE OF STACK..\n");
in_to_post(infix,postfix);
}
void push(char *symbol,int *top,char s[50])
{
s[++(*top)]=*symbol;
}
char pop(int *top,char s[50])
{
return s[(*top)--];
}
void display(int *top,char s[50])
{
int i;
for(i=*top;i>=0;i--)
{
printf("%c",s[i]);
}
}
int precedence(char symbol)
{
switch(symbol)
{
case '+':
return 1;
case '-':
return 1;
case '*':
return 2;
case '/':
return 2;
case '^':
return 3;
case '(':
return -1;
}
}
void in_to_post(char infix[50],char postfix[50])
{
int i;
char symbol,x;
char s[50];
int top=-1;
int j=-1;
for(i=0;infix[i]!='\0';i++)
{
symbol=infix[i];
if(isalpha(symbol))
{
postfix[++j]=symbol;
}
else
{
if(top==-1)
{
push(&symbol,&top,s);
}
else
{
if(symbol==')')
{
x=pop(&top,s);
while(x!='(')
{
postfix[++j]=x;
x=pop(&top,s);
}
}
else
{
if(symbol=='(')
{
push(&symbol,&top,s);
}
else
{
while(precedence(symbol)<=precedence(s[top]))
{
postfix[++j]=pop(&top,s);
}
push(&symbol,&top,s);
}
}
}
}
printf("\n");
display(&top,s);
}
while(top!=-1)
{
postfix[++j]=pop(&top,s);
}
postfix[++j]='\0';
printf("\nThe post fix expression is : ");
printf("\n%s",postfix);
}
No comments:
Post a Comment