public class Buchverwaltung {
public class BuchNode{
String buchtitel;
String autor;
BuchNode prev;
BuchNode next;
BuchNode(String titel, String verfasser){
buchtitel = titel;
autor = verfasser;
}
}
BuchNode first;
BuchNode last;
int count = 0;
/** Methode um einen neuen Knoten in die Liste
* lexikographisch einfügen
*/
public void insert(String titel, String autor){
BuchNode buch = new BuchNode(titel, autor); // Erzeugen eines neuen BuchKnotens
// falls die Liste leer war
if (first == null){
buch.prev = buch;
buch.next = null;
first = buch;
}
// falls die Liste NICHT leer war
else{
int count2 = 0;
BuchNode zeiger = first;
// Der Zeiger durchläuft solange die Schleife bis
// entweder das Ende der Liste erreicht ist oder
// die richtige Stellen gefunden wurde
while (autor.compareTo(zeiger.autor) >= 0 && count2 < count){
if (zeiger.next != null)
zeiger = zeiger.next;
count2++;
}
// Einfügen am Anfang der Liste
if (count2 == 0){
buch.prev = buch;
buch.next = first;
first.prev = buch;
first = buch;
}
// Einfügen am Ende der Liste
if (count2 == count){
System.out.println ("ZEIGER: " + zeiger.autor);
buch.prev = zeiger;
buch.next = buch;
zeiger.next = buch;
zeiger = buch;
}
// Einfügen irgendwo in der Mitte der Liste
if (count2 != 0 && count2 != count){
//System.out.println ("Zeiger: " + zeiger.autor);
buch.next = zeiger;
buch.prev = zeiger.prev;
zeiger.prev.next = buch;
zeiger.prev = buch;
zeiger = buch;
}
}
count++;
}
/** Methode um die komplette Liste auszugeben */
public void ausgabe(){
BuchNode temp = first;
int n = 1;
// Schleife in der die komplette Liste ausgegeben wird
while (n <= count){
System.out.println ("Autor " + n + ": " + temp.autor);
temp = temp.next;
n++;
}
}
/** Methode um den Autor eines bestimmten Buches zu finden */
public String autorSuche(String titel){
BuchNode temp = first;
int i = 0;
boolean found = false;
// Schleife in der die Liste durchsucht wird
while (titel.compareTo(temp.buchtitel) != 0 && i < count){
if (temp.next != null)
temp = temp.next;
i++;
if (titel.compareTo(temp.buchtitel) == 0)
found = true;
}
// Falls der Autor eines bestimmten Buches gefunden wird,
// wird er hier ausgegeben
if (found){
return "Das Buch " + titel + " ist vom Autor: " + temp.autor;
}
// Falls der Titel nicht in der Liste ist
else
return "Das Buch " + titel + " ist NICHT in der Liste enthalten";
}
public void delete (String autor){
int count2 = 1;
BuchNode zeiger = first;
while (count2 <= count){
System.out.println ("Counter: " + count + " Counter2: " + count2);
if (autor.compareTo(zeiger.autor) == 0){
System.out.println ("IF1");
if (count2 == count){
System.out.println (zeiger.autor);
zeiger = zeiger.prev;
zeiger.next = zeiger;
System.out.println (zeiger.autor);
}
}
zeiger = zeiger.next;
count2++;
}
}
public static void main(String[] args) {
Buchverwaltung test = new Buchverwaltung();
test.insert("Buch1", "Zacherl Jürgen");
test.insert("Buch2", "Bahl Christian");
test.insert("Buch3", "Ahl Christian");
test.insert("Buch4", "Grass Günter");
test.insert("Buch5", "Bernd Günter");
test.insert("Buch6", "Früchtl Christiane");
test.insert("Buch7", "Ditz Christian");
test.insert("Buch8", "Zitz Christian");
test.insert("Buch9", "Deutz Christian");
test.ausgabe();
test.delete(("Zitz Christian"));
test.ausgabe();
System.out.println(test.autorSuche("Orgasmusgarantie1"));
}
}