/** Diese Klasse implementiert die Schnittstelle AbstractCharList durch einfach verkettete Listen. */ class LinkedCharList implements AbstractCharList { protected ListCharElem head; //soll in Erbenklassen benutzbar sein //Konstruktoren public LinkedCharList () { head = null; } public LinkedCharList (char elem) { head = new ListCharElem (elem); } /** Diese Methode l�scht den Inhalt des Listenobjekts, d.h. sie macht die aktuelle Liste zur leeren Liste. */ public void purge () { head = null; } /** Diese Methode f�gt das Element elem als erstes Element in die Liste ein. @param elem das einzuf�gende Element */ public void insert (char elem) { ListCharElem hilf = new ListCharElem (elem); hilf.chainTo(head); head = hilf; } /** Diese Methode f�gt das Element elem hinter dem Listenkopf ein. @param elem das einzuf�gende Element */ public void insertbehind (char elem) { ListCharElem hilf = new ListCharElem (elem); ListCharElem successor = head.getNext(); hilf.chainTo(successor) ; head.chainTo(hilf) ; } /** Diese Methode l�scht das erste Element der aktuellen Liste. pre: head != null */ public void rest () { head = head.getNext(); } /** Diese Methode berechnet den Wert des ersten Elements der aktuellen Liste. pre: head != null */ public char first () { return head.getData(); } /** Diese Methode pr�ft, ob die aktuelle Liste leer ist. */ public boolean isempty () { return head == null; } /** Diese Methode berechnet die L�nge der aktuellen Liste. */ public int length () { ListCharElem hilf = head; int i = 0; while (hilf != null) { hilf = hilf.getNext(); i = i+1; } return i; } /** Diese Methode pr�ft, ob die aktuelle Liste das Element elem enth�lt. @param v das gesuchte Element */ public boolean search (char v) { ListCharElem hilf = head; int i = 0; while (hilf != null && hilf.getData() != v) hilf = hilf.getNext(); return (hilf != null); } }