Pascal_Testat_22
Home Nach oben

 

Home
Nach oben
Pascal_Testat_14
Pascal_Testat_15
Pascal_Testat_16
Pascal_Testat_17
Pascal_Testat_18
Pascal_Testat_20
Pascal_Testat_21
Pascal_Testat_22
Program Lineare_Liste;

uses
 crt;

type
 ListenPtr=^ListenTyp;
 ListenTyp=Record
            x:Real;
            next:ListenPtr;
           end;

var
 Liste:ListenPtr;
 x:real;
 a:char;

Procedure Einfuegen(x:real);
var
 cursor:ListenPtr;
Begin
 new(cursor);
 cursor^.x:=x;
 cursor^.next:=liste;
 liste:=cursor;
end;

Procedure Wait;
begin
 Writeln;
 Writeln ('Weiter mit beliebiger Taste');
 a:=readkey;
end;

procedure Loeschen;
var
 cursor:ListenPtr;
begin
 cursor:=liste;
 If cursor=nil then begin
  writeln ('liste ist leer! ');
  Wait;
 end
 else begin
  If cursor^.next=nil then begin
   Dispose(liste);
   Liste:=nil;
  end
  else begin
   while cursor^.next^.next<>nil do begin
    cursor:=cursor^.next;
   end;
   dispose(cursor^.next);
   cursor^.next:=nil;
  end;
  Writeln('letztes Element ist gelöscht');
  Wait;
 end;
end;

Procedure Anzeigen;
var
 cursor:listenPtr;
 i:Integer;
begin
 cursor:=liste;
 If cursor=nil then begin
  Writeln('Liste ist leer! ');
  Wait;
 end
 else
 begin
  i:=2;
  writeln (cursor^.x);
  while cursor^.next<>nil do begin
   cursor:=cursor^.next;
   writeln (cursor^.x);
   If i=20 then begin
    i:=-1;
    wait;
    clrscr;
   end;
   i:=i+1;
  end;
  writeln('Ende der liste erreicht.');
  Wait;
 end;
end;

begin
 Liste:=nil;
 a:='x';
 while a<>'q' do begin
  clrscr;
  writeln ('Lineare Listen von Guido.Moser@gmx.de (c) ');
  Writeln;
  Writeln ('(E)infügen (L)öschen (A)nzeigen (Q)uitt ');
  a:=readkey;
  case a of
   'e','E':begin
    clrscr;
    Writeln('Reelle Zahl eingeben ');
    read(x);
    Einfuegen(x);
   end;
   'l','L':begin
    clrscr;
    Loeschen;
   end;
   'a','A':begin
    clrscr;
    Writeln('Inhalt der Liste:');
    Anzeigen;
   end;
  end;
 end;
end.