public class VerketteteListe{
    private Eintrag list = null;
    
    VerketteteListe(){
	list = new Eintrag(null, null, null);
	list.prev = list.next = list;
    }
    
    Eintrag next(Eintrag e) {
	if (e.next == list)
	    return null;
	return e.next;
    }
    Eintrag getList(){
	return list;
    }
    Eintrag prev(Eintrag e){
	if (e.prev == list)
	    return null;
	return e.prev;
    }
    Object getInfo(){
	return list.info;
    }

    private void addBefore(Object i, Eintrag l) {
	if (i!=null){
	    Eintrag newEintrag = new Eintrag(i, l, l.prev);
	    newEintrag.prev.next = newEintrag;
	    newEintrag.next.prev = newEintrag;
	}
    }
	
    void add(Object o) {
	addBefore(o, list);
    }

    void remove(Eintrag e) {
	if (e != list){
	    e.prev.next = e.next;
	    e.next.prev = e.prev;
	}
    }

    public  String toString() {
	StringBuffer buf = new StringBuffer("[");
	for (Eintrag e = next(list); e != null; e = next(e))
	    {
		buf.append(e.info + "");
		if (next(e) != null)
		    buf.append(",");
	    }
	buf.append("]");
	return buf.toString();
    }
}
