PROGRAM dvlisten; TYPE DVListe = ^Element; Element = RECORD wert : INTEGER; next : DVListe; prev : DVListe; END; VAR l : DVListe; PROCEDURE init(VAR l:DVListe); BEGIN New(l); l^.next := l; l^.prev := l; END; PROCEDURE loeschen(x:INTEGER; VAR l:DVListe); VAR opfer:DVListe; BEGIN opfer := l^.next; WHILE (opfer <> l) AND (opfer^.wert <> x) DO opfer := opfer^.next; IF opfer <> l THEN BEGIN opfer^.prev^.next := opfer^.next; opfer^.next^.prev := opfer^.prev; Dispose(opfer); END; END; BEGIN init(l); END.