saban123

PROGRAM INFIX KE POSTFIX

Dec 15th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.85 KB | None | 0 0
  1. import java.util.Scanner;
  2. class Node{
  3.     char data;
  4.     int derajat;
  5.     Node prev;
  6.     Node next;
  7.    
  8.     Node(char data){
  9.         this.data=data;
  10.         if(data=='+'||data=='-'){
  11.             derajat=1;
  12.         }
  13.         else if(data=='*'||data=='/'){
  14.             derajat= 2;
  15.         }
  16.         else if(data=='^'){
  17.             derajat= 3;
  18.         }
  19.     }
  20. }
  21. class Postfix{
  22.     static Node head, tail;
  23.     static int size=0;
  24.    
  25.     int derajat(char data){
  26.         if(data=='+'||data=='-'){
  27.             return 1;
  28.         }
  29.         else if(data=='*'||data=='/'){
  30.             return 2;
  31.         }
  32.         else if(data=='^'){
  33.             return 3;
  34.         }
  35.         else
  36.             return 0;
  37.     }
  38.    
  39.     void push(char data){
  40.         Node tmp=new Node (data);
  41.         if(size==0){
  42.             head=tail=tmp;
  43.             size++;
  44.         }
  45.         else{
  46.             head.prev=tmp;
  47.             head.prev.next=head;
  48.             head=head.prev;
  49.             size++;
  50.         }
  51.     }
  52.    
  53.     void pop(){
  54.         if(size>1){
  55.             head=head.next;
  56.             head.prev=null;
  57.             size--;
  58.         }
  59.         else if(size==1){
  60.             head=null;
  61.             size--;
  62.         }
  63.     }
  64.    
  65. public static void main(String[] args){
  66. Scanner s=new Scanner(System.in);
  67. Postfix p=new Postfix();
  68. String infix;
  69. char[] inf;
  70. int der;
  71. System.out.print(" Masukkan INFIX = ");
  72. infix=s.nextLine(); // input string
  73. inf=infix.toCharArray(); // konversi string ke char
  74. System.out.print(" POSTFIX = ");
  75. for(int a=0; a<inf.length; a++){
  76.     if(inf[a]!='+' && inf[a]!='-' && inf[a]!='*' && inf[a]!='/' && inf[a]!='^' && inf[a]!='(' && inf[a]!=')' && inf[a]!=' '){
  77.         System.out.print(inf[a]);
  78.     }
  79.     else if(inf[a]=='('){
  80.         p.push(inf[a]);
  81.     }
  82.     else if(inf[a]==')'){
  83.         while(head.data!='('){
  84.         System.out.print(head.data);
  85.                     p.pop();
  86.         }
  87.     p.pop();
  88.     }
  89.     else{
  90.         der=p.derajat(inf[a]);
  91.         if(size==0){
  92.             p.push(inf[a]);
  93.             }
  94.         else if(size>=1 && der>=head.derajat){
  95.             p.push(inf[a]);
  96.         }
  97.         else if(der<head.derajat){
  98.             System.out.print(head.data);
  99.             p.pop();
  100.             p.push(inf[a]);
  101.                 }
  102.             }
  103.         }
  104.         while(size>0){
  105.             System.out.print(head.data);
  106.             p.pop();
  107.         }
  108.     }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment