Bom Dia !
Realizei um código de Pilha baseada em alocação sequencial especificamente para números reais (float).
E agora preciso entregar uma atividade que se baseia em construir um avaliador de expressões na forma posfixa em java.
Quem poder me ajudar estarei grato.
package teste;
public class aqui {
float elementos[];
int topo;
public aqui() {
elementos = new float[10];
topo = - 1;
}
public void push(float e) {
if (isFull()) {
throw new RuntimeException("StackOverflow");
}
topo++;
elementos[topo] = e;
}
public float pop() {
if (isEmpty()) {
throw new RuntimeException("Stack Empty");
}
float e;
e = elementos[topo];
topo--;
return e;
}
public float top() {
if (isEmpty()) {
throw new RuntimeException("Empty Stack");
}
return elementos[topo];
}
public boolean isEmpty() {
return (topo == -1);
}
public boolean isFull() {
return (topo == elementos.length - 1);
}
public float size() {
float e;
e = elementos[topo];
topo--;
return e;
}
}
package teste;
import static java.lang.System.exit;
import java.util.Scanner;
public class aquimain {
public static void main(String[] args) {
aqui p = new aqui();
Scanner scanner = new Scanner(System.in);
float num = 0;
int op = 0;
while (true) {
System.out.println("(1) para empilhar");
System.out.println("(2) para desempilhar");
System.out.println("(3) para acessar o topo");
System.out.println("(4) para mostrar os elementos da pilha");
op = scanner.nextInt();
switch (op) {
case 1:
System.out.println("Digite um numero: ");
num = scanner.nextFloat();
p.push(num);
break;
case 2:
while (!p.isEmpty()) {
float elemento;
elemento = p.pop();
System.out.println("Desempilhando: " + elemento);
}
break;
case 3:
float elemento;
elemento = p.top();
System.out.println("Topo: " + elemento);
break;
case 4:
while (!p.isEmpty()) {
elemento = p.pop();
System.out.println("[" + elemento+ "]");
}
break;
}
}
}