program e_list;  { Datenstruktur einer einfach verketteten Liste
                   zum Experimentieren ( z.B. Sortieren )         }

uses crt;

type  link = ^node;

      node = record
                 info : string;
                 next : link;
             end;

var   head,z,k  : link;


procedure list_init;
begin
  new(head);
  new(z);
  head^.next:=z;
  z^.next:=z;
end;

procedure delete_next(Knoten : link);
var temp : link;
begin
  temp:=Knoten^.next;
  Knoten^.next:=temp^.next;
  dispose(temp);
end;

procedure insert_after(Knoten : link; Inhalt : string);
var temp : link;
begin
  new(temp);
  temp^.next:=Knoten^.next;
  temp^.info:=Inhalt;
  Knoten^.next:=temp;
end;

procedure read_liste;
var temp  : link;
    stuff : string;

begin
  list_init;
  temp:=head;
  writeln('Geben Sie nun die Inhalte aller Knoten an .  ( Ende mit CR ) ');
  writeln;writeln;
  repeat
    write('   Inhalt ?  '); readln(stuff);
    if stuff<>'' then begin
                        insert_after(temp,stuff);
                        temp:=temp^.next;
                      end;
  until stuff='';
end;


procedure print_liste(ab : link);
var temp : link;
begin
 temp:=ab;
 while temp<>z do
   begin
     write(temp^.info , '---');
     temp:=temp^.next;
   end;
 writeln('ende');
end;




begin
 clrscr;
 writeln('         ***  Test-Programm fÜr einfache Liste  *** ');
 writeln('Zuerst muß eine Liste mit Buchstaben o.Ä. erzeugt werden ! ');
 writeln;writeln;
 read_liste;
 readln;
 clrscr;
 print_liste(head^.next);
 readln;
end.