import java.io.*;
import java.util.*;
class Stack
{
private int a[]=new int[20];
int top;
Stack()
{
top=0;
}
public void push(int v)
{
if(top<20)
a[top++]=v;
else
System.out.println("Overflow");
}
public int pop()
{
if(top>0)
return a[--top];
else
{
System.out.println("Underflow");
return -1;
}
}
public boolean isEmpty()
{
return top==0;
}
}
class Postfix
{
public static void main(String as[]) throws Exception
{
int a,b,c=0;
String str,s;
Stack s1=new Stack();
int i;
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
System.out.print("Enter Postfix expression:");
str=br.readLine();
StringTokenizer st=new StringTokenizer(str,",");
while(st.hasMoreTokens())
{
s=st.nextToken();
if(("+-*/").indexOf(s)>=0)
{
b=s1.pop();
a=s1.pop();
switch(s.charAt(0))
{
case '+':c=a+b;
break;
case '-':c=a-b;
break;
case '*':c=a*b;
break;
case '/':c=a/b;
break;
}
s1.push(c);
}
else
s1.push(Integer.parseInt(s));
}
System.out.println("Result="+s1.pop());
}
}
/* Output */
/* you may give postfix of (2*3)+(4/2) Note: Separate operands and operators with commas*/
Enter Postfix expression:2,3,*,4,2,/,+
Result=8
0 comments:
Post a Comment