1918번 - 후위 표기식
흠..완전 맞다고 생각하다가 틀릴때마다 답답합니다..
import java.util.Scanner;
class StackNode{ char data; StackNode link;}class LinkedStack{ private StackNode top; public void push(char num){ StackNode newNode=new StackNode(); newNode.data=num; newNode.link=top; top=newNode; } public char pop(){ if(empty()){ return 0; } char item=top.data; top=top.link; return item; } public boolean empty(){ if(top==null){ return true; } else{ return false; } }}
public class Test{ public static void main(String arg[]){ LinkedStack s = new LinkedStack(); Scanner input = new Scanner(System.in); String str; char c; int count=0; str=input.nextLine(); int len=str.length(); for(int i=0;i<len;i++){ if(count!=-1){ c=str.charAt(i); }else{ c=')'; count+=2; } switch(c){ case '(': count++; break; case '+': case '-': s.push(c); break; case '*': case '/': if(count!=0){ s.push(c); }else{ s.push(c); System.out.print(str.charAt(i+1)); count--; } break; case ')': c=s.pop(); System.out.print(c); count--; break; default: System.out.print(c); break; } } while(!s.empty()){ c=s.pop(); System.out.print(c); } }}
댓글을 작성하려면 로그인해야 합니다.
chucky3 8년 전
흠..완전 맞다고 생각하다가 틀릴때마다 답답합니다..
import java.util.Scanner;
class StackNode{
char data;
StackNode link;
}
class LinkedStack{
private StackNode top;
public void push(char num){
StackNode newNode=new StackNode();
newNode.data=num;
newNode.link=top;
top=newNode;
}
public char pop(){
if(empty()){
return 0;
}
char item=top.data;
top=top.link;
return item;
}
public boolean empty(){
if(top==null){
return true;
}
else{
return false;
}
}
}
public class Test{
public static void main(String arg[]){
LinkedStack s = new LinkedStack();
Scanner input = new Scanner(System.in);
String str;
char c;
int count=0;
str=input.nextLine();
int len=str.length();
for(int i=0;i<len;i++){
if(count!=-1){
c=str.charAt(i);
}else{
c=')';
count+=2;
}
switch(c){
case '(':
count++;
break;
case '+':
case '-':
s.push(c);
break;
case '*':
case '/':
if(count!=0){
s.push(c);
}else{
s.push(c);
System.out.print(str.charAt(i+1));
count--;
}
break;
case ')':
c=s.pop();
System.out.print(c);
count--;
break;
default:
System.out.print(c);
break;
}
}
while(!s.empty()){
c=s.pop();
System.out.print(c);
}
}
}