/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
import java.util.Scanner ;
class LinkedStack {
public class StackNode{
int data;
StackNode link;
}
private StackNode top;
public boolean isEmpty( ) {
return ( top == null ) ;
}
public void push( int item) {
StackNode newNode = new StackNode( ) ;
newNode.data = item;
newNode.link = top;
top = newNode;
}
public int pop( ) throws IntegerStackEmptyException{
if ( isEmpty( ) ) {
throw new IntegerStackEmptyException( "수식 형식이 잘못되었습니다." ) ;
}
else {
int item = top.data ;
top = top.link ;
return item;
}
}
public class IntegerStackEmptyException
extends Exception { public IntegerStackEmptyException
( String message
) { super ( message) ;
}
}
public static class PostFix {
public int evalPostfix
( String postfix
) throws IntegerStackEmptyException
{ LinkedStack s= new LinkedStack( ) ;
exp = postfix;
int op1,op2,value;
char testCh;
for ( int i= 0 ; i< 7 ; i++ ) {
testCh = exp.charAt ( i) ;
if ( testCh != '+' && testCh != '-' &&
testCh!= '*' && testCh != '/' ) {
value = testCh - '0' ;
s.push ( value) ;
}
else {
op2 = s.pop ( ) ;
op1 = s.pop ( ) ;
switch ( testCh) {
case '+' : s.push ( op1 + op2) ; break ;
case '-' : s.push ( op1 - op2) ; break ;
case '*' : s.push ( op1 * op2) ; break ;
case '/' : s.push ( op1 / op2) ; break ;
}
}
}
return s.pop ( ) ;
}
public static void main
( String [ ] args
) throws IntegerStackEmptyException
{ // TODO Auto-generated method stub
Scanner scan
= new Scanner
( System .
in ) ; PostFix o = new PostFix( ) ;
System .
out .
print ( "후위 표기정수 수식 입력:" ) ;
System .
out .
println ( "결과: " + o.
evalPostfix ( result
) ) ; }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbXBvcnQgamF2YS51dGlsLlNjYW5uZXI7CgpjbGFzcyBMaW5rZWRTdGFjayB7CgoJcHVibGljIGNsYXNzIFN0YWNrTm9kZXsKCQlpbnQgZGF0YTsKCQlTdGFja05vZGUgbGluazsKCX0KCXByaXZhdGUgU3RhY2tOb2RlIHRvcDsKCglwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCl7CgkJcmV0dXJuICh0b3AgPT0gbnVsbCk7Cgl9CgoJcHVibGljIHZvaWQgcHVzaChpbnQgaXRlbSl7CgkJU3RhY2tOb2RlIG5ld05vZGUgPSBuZXcgU3RhY2tOb2RlKCk7CgkJbmV3Tm9kZS5kYXRhID0gaXRlbTsKCQluZXdOb2RlLmxpbmsgPSB0b3A7CgkJdG9wID0gbmV3Tm9kZTsKCX0KCglwdWJsaWMgaW50IHBvcCgpIHRocm93cyBJbnRlZ2VyU3RhY2tFbXB0eUV4Y2VwdGlvbnsKCQlpZihpc0VtcHR5KCkpewoJCQl0aHJvdyBuZXcgSW50ZWdlclN0YWNrRW1wdHlFeGNlcHRpb24oIuyImOyLnSDtmJXsi53snbQg7J6Y66q765CY7JeI7Iq164uI64ukLiIpOwoJCX0KCQllbHNlewoJCQlpbnQgaXRlbSA9IHRvcC5kYXRhOwoJCQl0b3AgPSB0b3AubGluazsKCQkJcmV0dXJuIGl0ZW07CgkJfQoJfQoJcHVibGljIGNsYXNzIEludGVnZXJTdGFja0VtcHR5RXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHsKCQlwdWJsaWMgSW50ZWdlclN0YWNrRW1wdHlFeGNlcHRpb24oU3RyaW5nIG1lc3NhZ2UpIHsKCQkJc3VwZXIobWVzc2FnZSk7CgkJfQoJfQoKCXB1YmxpYyBzdGF0aWMgY2xhc3MgUG9zdEZpeCB7CgoJCXByaXZhdGUgU3RyaW5nIGV4cDsKCgkJcHVibGljIGludCBldmFsUG9zdGZpeChTdHJpbmcgcG9zdGZpeCkgdGhyb3dzIEludGVnZXJTdGFja0VtcHR5RXhjZXB0aW9uewoJCQlMaW5rZWRTdGFjayBzPSBuZXcgTGlua2VkU3RhY2soKTsKCQkJZXhwID0gcG9zdGZpeDsKCQkJaW50IG9wMSxvcDIsdmFsdWU7CgkJCWNoYXIgdGVzdENoOwoJCQlmb3IoaW50IGk9MDsgaTw3O2krKyl7CgkJCQl0ZXN0Q2ggPSBleHAuY2hhckF0KGkpOwoJCQkJaWYodGVzdENoICE9JysnICYmIHRlc3RDaCAhPSAnLScgJiYKCQkJCQkJdGVzdENoIT0nKicgJiYgdGVzdENoICE9Jy8nKXsKCQkJCQl2YWx1ZSA9IHRlc3RDaCAtICcwJzsKCQkJCQlzLnB1c2godmFsdWUpOwoJCQkJfQoJCQkJZWxzZXsKCQkJCQlvcDIgPSBzLnBvcCgpOwoJCQkJCW9wMSA9IHMucG9wKCk7CgkJCQkJc3dpdGNoKHRlc3RDaCl7CgkJCQkJY2FzZScrJyA6IHMucHVzaChvcDEgKyBvcDIpOyBicmVhazsKCQkJCQljYXNlJy0nIDogcy5wdXNoKG9wMSAtIG9wMik7IGJyZWFrOwoJCQkJCWNhc2UnKicgOiBzLnB1c2gob3AxICogb3AyKTsgYnJlYWs7CgkJCQkJY2FzZScvJyA6IHMucHVzaChvcDEgLyBvcDIpOyBicmVhazsKCQkJCQl9CgkJCQl9CgoJCQl9CgkJCXJldHVybiBzLnBvcCgpOwkKCQl9CgkJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEludGVnZXJTdGFja0VtcHR5RXhjZXB0aW9uewoJCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCgoKCQkJU2Nhbm5lciBzY2FuID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCQkJUG9zdEZpeCBvID0gbmV3IFBvc3RGaXgoKTsKCgkJCVN5c3RlbS5vdXQucHJpbnQoIu2bhOychCDtkZzquLDsoJXsiJgg7IiY7IudIOyeheugpToiKTsKCQkJU3RyaW5nIHJlc3VsdCA9IHNjYW4ubmV4dCgpOwoKCQkJU3lzdGVtLm91dC5wcmludGxuKCLqsrDqs7w6ICIrby5ldmFsUG9zdGZpeChyZXN1bHQpKTsKCQl9CgoJfQp9