Inf_Pos.java



import java.io.*;
import java.lang.String;

class nodo
{
	char car;
	nodo sig = null;

	public nodo() {}
	public nodo(char car)
	{
		this.car = car;
	}

	char Tope()
	{
		return car;
	}
}

public class Inf_Pos
{
	nodo opstk = null;
	nodo aux = null;
	String cad = "8+3*2", POSTFIJA="";
	int k=0;
	char symb, topsymb;

	public static void main(String[] Args) { new Inf_Pos(); }

	public Inf_Pos()
	{
		while(cad.length() > k)
		{
			symb = cad.charAt(k);
			if ( EsOperando(symb) ) POSTFIJA = POSTFIJA+symb;
			else
			{
				while ((opstk != null) && prcd(opstk.Tope(), symb )>0 )
				{
					topsymb = opstk.car;
					opstk = opstk.sig;
					POSTFIJA = POSTFIJA+topsymb;
				}
				aux = new nodo(symb);
				aux.sig = opstk;
				opstk = aux;
			}
			k++;
		}

		while ( opstk != null )
		{
			topsymb = opstk.car;
			opstk = opstk.sig;
			POSTFIJA = POSTFIJA + topsymb;
		}
		System.out.println(POSTFIJA);
	}

	int prcd(char Tope, char CAR)
	{
		if ( "*/".indexOf(CAR) > 0) return 1;
		if ( "+-".indexOf(CAR) > 0) return 2;
		return 3;	// ERROR
	}

	boolean EsOperando(char CAR)
	{
		String numeros = "0123456789";
		if (numeros.indexOf(CAR) > 0 ) return true;
		return false;
	}
}