public class Pile <E>{
private class Cell<T>{
T valeur;
Cell<T>lien;
Cell(T valeur){
this.valeur=valeur;
lien=null;
}
}
private Cell<E> sommet;
public Pile() {
sommet = null;
}
public boolean estVide(){
return sommet==null;
}
public void empiler(E valeur){
Cell<E> cell=new Cell<E>(valeur);
cell.lien=sommet;
sommet=cell;
}
public E sommet() {
return sommet.valeur;
}
public E depiler(){
E res = sommet.valeur;
sommet = sommet.lien;
return res;
}
public String toString() {
String res= "";
Cell <E>link = sommet;
while (link!=null) {
res+=link.valeur+"";
link=link.lien;
}
return ""+res+"";
}
public static void main(String[] args) {
System.out.println(toInFixe("((a+b)-c)"));
}
public static boolean estUneVariable(char car) {
return car >= 'a' && car <= 'z';
}
public static boolean estUnOperateur(char car) {
return car == '+' || car == '-' || car == '*' || car == '/'
|| car == '%';
}
public static String toPostFixe(String chaine) {
Pile p = new Pile();
String res = "";
for (int i = 0; i < chaine.length(); i++) {
if (estUneVariable(chaine.charAt(i)))
res += chaine.charAt(i);
else if (estUnOperateur(chaine.charAt(i)))
p.empiler(chaine.charAt(i));
else if (chaine.charAt(i) == ')')
res += p.depiler();
}
return res;
}
public static String toPreFixe(String chaine) {
Pile p = new Pile();
String res = "";
for (int i = chaine.length() - 1; i >= 0; i--) {
if (estUneVariable(chaine.charAt(i)))
res = chaine.charAt(i) + res;
else if (estUnOperateur(chaine.charAt(i)))
p.empiler(chaine.charAt(i));
else if (chaine.charAt(i) == '(')
res = p.depiler() + res;
}
return res;
}
public static String toInFixe(String postefixe) {
Pile p = new Pile();
String res = "";
for (int i = 0; i < postefixe.length(); i++) {
if (estUneVariable(postefixe.charAt(i)))
p.empiler(postefixe.charAt(i));
else {
res = p.depiler()+res;
res +=postefixe.charAt(i);
res = p.depiler()+res;
}
}
return res;
}
}
public static String toInFixe(String postefixe) { Pile p = new Pile(); String res = ""; for (int i = 0; i < postefixe.length(); i++) { if (estUneVariable(postefixe.charAt(i))) p.empiler(postefixe.charAt(i)); else { res = p.depiler()+res; res +=postefixe.charAt(i); res = p.depiler()+res; } } return res; }
. j'ai testé mais j'ai une exception.