Hallo, ich habe die Aufgabe einen Wert der in Infix vorliegt mithilfe eines Stacks in Postfix umzuwandeln, dass ganze soll mittels einer Methode passiere.
Ich habe die Methode schon sogut wie fertig aber ich schaffe es nicht in der Methode ein neuen Stack anzulegen in den dann die Operatoren zwischen gespeichert werden.
Hier meine Methode:
Die Klasse in der die Methode steht sieht so aus:
(Da die anderen Methoden funktionieren nur der Kopf mit dem wichtigsten)
Ich hoffe ihr könnt mir sagen wie ich es doch noch schaffe ein neuen Stack zu erstellen und so
meine Methode zum laufen bekomm
Ich habe die Methode schon sogut wie fertig aber ich schaffe es nicht in der Methode ein neuen Stack anzulegen in den dann die Operatoren zwischen gespeichert werden.
Hier meine Methode:
Java:
public void infixToPostfix() throws StackException {
if (size == 0) {
throw new StackException("Stack empty"); }
LinkedListStack tmp = new LinkedListStack(); // irgendwas Klappt hier nicht
for (int i = 0; i < size; i++) {
try {
if(this.top().equals('(')) {
this.pop();
}
if(this.top().equals(')')) {
System.out.print(tmp.top());
System.out.print(" ");
tmp.pop();
}
if(this.top().equals('/')) {
tmp.push(this.top()); // hier vermute ich auch einen Fehler
this.pop();
}
if(this.top().equals('*')) {
tmp.push(this.top());
this.pop();
}
if(this.top().equals('-')) {
tmp.push(this.top());
this.pop();
}
if(this.top().equals('+')) {
tmp.push(this.top());
this.pop();
}
if(this.top().equals('%')) {
tmp.push(this.top());
this.pop();
}
else
System.out.print(this.top());
System.out.print(" ");
System.out.print(tmp.top());
this.pop();
} catch (StackException e) {
}
}
}
Die Klasse in der die Methode steht sieht so aus:
(Da die anderen Methoden funktionieren nur der Kopf mit dem wichtigsten)
Java:
public class LinkedListStack<T> {
class ListElement<T> {
private T item;
private ListElement<T> next;
ListElement(ListElement<T> next, T item) {
this.next=next;
this.item=item;
}
T getItem() {
return item;
}
ListElement<T> getNext() {
return next;
}
}
private ListElement<T> first = null;
private int size = 0;
public boolean isEmpty() {
return size == 0;
}
public int size() {
return size;
}
Ich hoffe ihr könnt mir sagen wie ich es doch noch schaffe ein neuen Stack zu erstellen und so
meine Methode zum laufen bekomm