public class Bank {
String namenseingabe;
Element eins, hilf;
public static void main(String[] args) {
Bank b = new Bank();
}
public Bank(){
Spende spendenext;
Spende spendenanfang;
spendenanfang = new Spende ("zweu", 70, 50);
eins = new Element(spendenanfang);
hilf = eins;
spendenext = new Spende ("zwew", 70, 50);
eins.insert(eins,spendenext);
spendenext = new Spende("eins",80,60);
eins.insert(eins,spendenext);
spendenext = new Spende("zwei",90,50);
eins.insert(eins,spendenext);
spendenext = new Spende("drei",85,62);
eins.insert(eins,spendenext);
while(hilf != null){
System.out.println(hilf.inhalt+"\n-----");
hilf=hilf.naechstes;
}
System.out.println("\n\nNach Löschen:");
int ret = eins.removeElement(eins,new Spende ("zweu", 70, 50));
if (ret == 1)
System.out.println("Keine Elemente in Liste mehr vorhanden !");
else if (ret == -1)
System.out.println("Konnte Spende nicht in Liste finden !");
else {
hilf = eins;
while (hilf != null) {
System.out.println(hilf.inhalt+"\n-----");
hilf=hilf.naechstes;
}
}
}
}
class Element {
Spende inhalt;
Element naechstes;
public Element(Spende inhalt){
this.inhalt=inhalt;
this.naechstes=null;
}
public void haengeAn(Spende m){
if (naechstes != null){
naechstes.haengeAn(m);
} else {
naechstes=new Element(m);
}
}
public int insert(Element start,Spende m) {
int pos;
String listname;
Element help = start;
/*
* Der Name des übergebenen Spenders.
*/
String mname = m.name;
Spende temp = null;
Element temp_element = null;
Element neu = null;
/*
* Gehe die Liste von Anfang bis Ende durch.
*/
while(help != null) {
/*
* Der Name des aktuellen Spenders
*/
listname = help.inhalt.name;
pos = mname.compareTo(listname);
/*
* Wenn der übergebene Spendername lexikografisch kleiner ist als der aktuelle
* Spendername, wird der Spender hier eingefügt.
*/
if(pos < 0) {
/*
* In temp wird die aktuelle Spende gespeichert.
*/
temp = help.inhalt;
/*
* In temp_element wird das nächste Element gespeichert.
*/
temp_element = help.naechstes;
/*
* Der übergebene Spender wird an der aktuellen Position eingefügt.
*/
help.inhalt = m;
/*
* Ein Element wird erzeugt, dass den bisherigen Spender enthält.
*/
neu = new Element(temp);
/*
* Dieses Element zeigt auf das oben gespeicherte Element, hiermit wird sichergestellt,
* das die Liste korrekt weitergeht und keine Elemente "wegfallen".
*/
neu.naechstes = temp_element;
/*
* Der bisher aktuelle Spender rückt um eins weiter in der Liste.
*/
help.naechstes = neu;
return 0;
} else
help = help.naechstes;
}
/*
* Wenn der User an diese Stelle kommt, dann muss das Element an das Ende
* eingefügt werden, somit kann unsere andere Methode haengeAn(..) aufgerufen werden.
*/
start.haengeAn(m);
return 0;
}
public int removeElement(Element start,Spende m) {
Element help = start;
Element temp_element = null;
/*
* Gehe Liste von Anfang an durch...
*/
while(help != null) {
/*
* Im Folgenden wird das nächste Element mit dem zu löschenden Element verglichen,
* vorher vergleichen wir ob wir nicht schon am Ende der Liste sind.
*/
if(help.naechstes != null) {
/*
* Handelt es sich bei dem nächsten Element um das Element welches wir löschen wollen?
* Falls ja dann speicher das nächste Element in temp_element und leg den "Zeiger"
* des aktuellen Elements auf das Element auf das temp_element "zeigt".
*/
if(help.naechstes.inhalt.equals(m)) {
temp_element = help.naechstes;
help.naechstes = temp_element.naechstes;
return 0;
}
} else {
/*
* Liste hat nur ein Element -> schauen ob das einzige Element das gesuchte ist
*/
if(help.inhalt.equals(m)) {
return 1;
}
}
help = help.naechstes;
}
/*
* Spende nicht gefunden.
*/
return -1;
}
}
class Spende {
String name;
int euro,cent;
public Spende(String name, int euro, int cent) {
this.name=name;
this.euro=euro;
this.cent=cent;
}
public String toString() {
return "Name = "+name+"\nEuro = "+euro+"\nCent = "+cent+"\n";
}
public boolean equals(Object obj) {
if(this == obj)
return true;
if(obj == null)
return false;
if(getClass() != obj.getClass())
return false;
Spende other = (Spende)obj;
return name.equals(other.name) && euro == other.euro && cent == other.cent;
}
}