/** 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);
	}
 
}

