Eu ja tenho os codigos prontos MAIS estou com uma grande duvida de como fazer Conversão de Expressão Infixa para Pós-fixa (Aplicação de PILHA)
package ativlistadupla;
public class Lista {
private No prim, ultimo;
public Lista() {
prim = null;
ultimo = null;
}
public No getUltimo() {
return ultimo;
}
public No getPrimeiro() {
return prim;
}
public void listar() {
No tmp = prim;
while (tmp != null) {
System.out.println("Dado: " + tmp.dado);
tmp = tmp.prox;
}
System.out.println("Final da lista");
}
public No buscar(No anterior) {
No aux = prim;
while (aux != null) {
if (aux.prox == anterior) {
break;
} else {
aux = aux.prox;
}
}
return aux;
}
public No buscar(int valor) {
No aux = prim;
while (aux != null) {
if (aux.dado == valor) {
break;
} else {
aux = aux.prox;
}
}
return aux;
}
public No buscarUltimo(int valor) {
No aux = ultimo;
while (aux != null) {
if (aux.dado == valor) {
break;
} else {
aux = aux.prox;
aux = null;
}
}
return aux;
}
public void inserirInicio(int num) {
No novo = new No();
novo.dado = num;
novo.prox = prim;
prim = novo;
}
public void inserirFim(int num) {
No novo = new No();
novo.dado = num;
novo.prox = null;
if (ultimo != null) {
ultimo.prox = novo;
ultimo = novo;
} else {
prim = novo;
}
}
public void inserirMeio(int num, int anterior) {
No novo = new No();
novo.dado = num;
No aux = buscar(anterior);
if (aux == null) {
System.out.println("Dado anterior nao localizado");
System.out.println("Novo dado inserido no final da lista");
inserirFim(num);
} else {
novo.prox = aux.prox;
aux.prox = novo;
}
}
public boolean remover(int nro) {
boolean flag = false;
No exc = buscar(nro);
if (exc != null) {
if (exc == prim) {
prim = prim.prox;
}
else if(exc == ultimo){
No anterior = buscar(exc);
ultimo = anterior;
} else {
No anterior = buscar(exc);
anterior.prox = exc.prox;
}
flag = true;
}
return flag;
}
public boolean removerPrimeiro(int nro){
if(prim != null){
prim = prim.prox;
return true;
}
else{
return false;
}
}
public boolean removerUltimo(int nro){
if(ultimo != null){
No anterior = buscar(ultimo);
ultimo = anterior;
return true;
}
else{
return false;
}
}
}
package ativlistadupla;
public class Pilha {
private Lista vet;
public Pilha() {
vet = new Lista();
}
public void push(int dado) {
vet.inserirFim(dado);
}
public int pop() {
int resp = -1;
No remover = vet.getUltimo();
if (remover != null) {
vet.removerUltimo(remover.dado);
remover.dado = resp;
}
return resp;
}
public boolean isEmpty(){
if(vet.getPrimeiro() != null){
return false;
}else{
return true;
}
}
}***************************************************0