Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- class Node{
- char data;
- int derajat;
- Node prev;
- Node next;
- Node(char data){
- this.data=data;
- if(data=='+'||data=='-'){
- derajat=1;
- }
- else if(data=='*'||data=='/'){
- derajat= 2;
- }
- else if(data=='^'){
- derajat= 3;
- }
- }
- }
- class Postfix{
- static Node head, tail;
- static int size=0;
- int derajat(char data){
- if(data=='+'||data=='-'){
- return 1;
- }
- else if(data=='*'||data=='/'){
- return 2;
- }
- else if(data=='^'){
- return 3;
- }
- else
- return 0;
- }
- void push(char data){
- Node tmp=new Node (data);
- if(size==0){
- head=tail=tmp;
- size++;
- }
- else{
- head.prev=tmp;
- head.prev.next=head;
- head=head.prev;
- size++;
- }
- }
- void pop(){
- if(size>1){
- head=head.next;
- head.prev=null;
- size--;
- }
- else if(size==1){
- head=null;
- size--;
- }
- }
- public static void main(String[] args){
- Scanner s=new Scanner(System.in);
- Postfix p=new Postfix();
- String infix;
- char[] inf;
- int der;
- System.out.print(" Masukkan INFIX = ");
- infix=s.nextLine(); // input string
- inf=infix.toCharArray(); // konversi string ke char
- System.out.print(" POSTFIX = ");
- for(int a=0; a<inf.length; a++){
- if(inf[a]!='+' && inf[a]!='-' && inf[a]!='*' && inf[a]!='/' && inf[a]!='^' && inf[a]!='(' && inf[a]!=')' && inf[a]!=' '){
- System.out.print(inf[a]);
- }
- else if(inf[a]=='('){
- p.push(inf[a]);
- }
- else if(inf[a]==')'){
- while(head.data!='('){
- System.out.print(head.data);
- p.pop();
- }
- p.pop();
- }
- else{
- der=p.derajat(inf[a]);
- if(size==0){
- p.push(inf[a]);
- }
- else if(size>=1 && der>=head.derajat){
- p.push(inf[a]);
- }
- else if(der<head.derajat){
- System.out.print(head.data);
- p.pop();
- p.push(inf[a]);
- }
- }
- }
- while(size>0){
- System.out.print(head.data);
- p.pop();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment