/* related posts with thumb nails */

Program to evaluate postfix expression by using Stack?:

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

Related Topics:

0 comments:

Post a Comment