Infix To Postfix In Java Using Stack
25--- Write a program to convert a given infix expression to postfix expression using stack.
import java.util.*;
import java.util.*;
class Infix2Postfix
{ char s[]=new char[100];
int top=-1;
void push(char ch){
top=top+1;
s[top]=ch;
}
char pop(){
char ch;
ch=s[top];
top=top-1;
return(ch);
}
int pre(char ch){
switch(ch){
case'^':return 3;
case'*':return 2;
case'/':return 2;
case'+':return 1;
case'-':return 1;
}
return 0;
}
boolean isoperand(char ch){
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
return true;
else
return false;
}
boolean isoperator(char ch){
if(ch=='^'||ch=='*'||ch=='/'||ch=='+'||ch=='-')
return true;
else
return false;
}
void postfixexp(String a){
char p[]=new char[a.length()];
char ch;
int j=0,i;
for(i=0;i<a.length();i++)
{ch=a.charAt(i);
if(ch=='(')
push(ch);
else if(isoperand(ch))
p[j++]=ch;
else if(isoperator(ch))
{ if(s[top]==0||pre(ch)>pre(s[top]))
push(ch);
else if(pre(ch)>=pre(s[top]))
{ p[j++]=pop();
push(ch);
}
}
else if(ch==')')
{ while((ch=pop())!='(')
{p[j++]=ch;//displaying uptill ( is encountered
}
}
}
for(i=0;i<j;i++)
{System.out.print(p[i]);
}//displaying
}
public static void main()
{ Scanner sc=new Scanner(System.in);
Infix2Postfix obj=new Infix2Postfix();
System.out.println("Enter Infix Expression");
String str=sc.nextLine();
System.out.println("CORRESPONDING POSTFIX EXPRESSION:-");
obj.postfixexp("("+str+")");
}//end of main
}//end of class
OUTPUT---
Enter Infix Expression
A+B*(D-F*G+T)+A/G+(J*H)
CORRESPONDING POSTFIX EXPRESSION:-
ABDFGT*-A*GJH*/+
import java.util.*;
import java.util.*;
class Infix2Postfix
{ char s[]=new char[100];
int top=-1;
void push(char ch){
top=top+1;
s[top]=ch;
}
char pop(){
char ch;
ch=s[top];
top=top-1;
return(ch);
}
int pre(char ch){
switch(ch){
case'^':return 3;
case'*':return 2;
case'/':return 2;
case'+':return 1;
case'-':return 1;
}
return 0;
}
boolean isoperand(char ch){
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
return true;
else
return false;
}
boolean isoperator(char ch){
if(ch=='^'||ch=='*'||ch=='/'||ch=='+'||ch=='-')
return true;
else
return false;
}
void postfixexp(String a){
char p[]=new char[a.length()];
char ch;
int j=0,i;
for(i=0;i<a.length();i++)
{ch=a.charAt(i);
if(ch=='(')
push(ch);
else if(isoperand(ch))
p[j++]=ch;
else if(isoperator(ch))
{ if(s[top]==0||pre(ch)>pre(s[top]))
push(ch);
else if(pre(ch)>=pre(s[top]))
{ p[j++]=pop();
push(ch);
}
}
else if(ch==')')
{ while((ch=pop())!='(')
{p[j++]=ch;//displaying uptill ( is encountered
}
}
}
for(i=0;i<j;i++)
{System.out.print(p[i]);
}//displaying
}
public static void main()
{ Scanner sc=new Scanner(System.in);
Infix2Postfix obj=new Infix2Postfix();
System.out.println("Enter Infix Expression");
String str=sc.nextLine();
System.out.println("CORRESPONDING POSTFIX EXPRESSION:-");
obj.postfixexp("("+str+")");
}//end of main
}//end of class
OUTPUT---
Enter Infix Expression
A+B*(D-F*G+T)+A/G+(J*H)
CORRESPONDING POSTFIX EXPRESSION:-
ABDFGT*-A*GJH*/+
Comments
Post a Comment