Algoritma – Mengubah Operasi Infix ke Dalam Bentuk PostFix

Program ini merupakan program pengkoversian dari operasi Infix ke dalam operasi postfix.  Algoritma dasar dari program ini adalah bagaimana cara kita membaca atau mengartika bentuk infix tersebut ke dalam betuk postfix. Kemudian jika bertemu dengan tanda kurung, maka akan dilakukan pop semua elemen stack sampai menemukan kurung tutup pasangannya.

Bentuk post Fix merupakan betuk lain dari operasi matematika. Biasanya bentuk ini digunakan oleh mesin penghitung atau computer untuk memproses data yang lebih lanjut.

Berikut meupakan source code dari program ini :

package infix2postfix;import javax.swing.*;

class Stack

{   private int maxSize;

private int top;

public char [] array;

public char [] hasil;

public int indexHasil;

public Stack(int input)

{   maxSize=input;

array = new char [input];

hasil = new char [50];

indexHasil = 0;

top=-1;

}

public int hirarki(char ope)

{   if(ope ==’%’ || ope==’&’)

return 3;

else if(ope ==’*’ || ope==’/’)

return 2;

else if(ope ==’+’ || ope==’-‘)

return 1;

else

return 0;

}

public void push(char data)

{   array[++top]=data;      }

public char pop()

{   return (array[top–]);  }

public char peek()

{   return (array[top]);    }

public boolean full()

{   return (top==maxSize-1);}

public boolean empty()

{   return (top==-1);       }

public void masukkanHasil(char input)

{   hasil[indexHasil++]=input;  }

public void edit(char input)

{   if(input>=48&&input<58) //jika bertemu angka maka diPush();

masukkanHasil(input);

else if(hirarki(input)>0)

{   if(empty()||peek()=='(‘)

push(input);

else

{   char tandaLama=peek();

char tandaBaru=input;

if(hirarki(tandaLama)<hirarki(tandaBaru))

push(tandaBaru);

else

{   while(hirarki(tandaLama)>=hirarki(tandaBaru)&&!empty()&&peek()!='(‘)

masukkanHasil(pop());

push(tandaBaru);

}

}

}

else

{   if(input=='(‘)

push(input);

else

{   while(!empty()&&peek()!='(‘)

masukkanHasil(pop());

top–;

}

}

}

}

public class Main

{   public static void main(String[] args)

{   String in=JOptionPane.showInputDialog(“Masukkan Max Stack = “);

Stack s = new Stack(Integer.parseInt(in));

in=null;

in=JOptionPane.showInputDialog(“Masukkan operasi inFix = “);

for(int i=0;i<in.length();i++)

{   s.edit(in.charAt(i));   }

while(!s.empty())

s.masukkanHasil(s.pop());

JOptionPane.showMessageDialog(null,”Hasil dapat dilihat pada console !”);

for(int i=0;i<s.indexHasil;i++)

System.out.print(s.hasil[i]);

}

}

Tinggalkan Jejak

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s