type PPrvek = ^TPrvek; TPrvek = record Hodnota: integer; Dalsi: PPrvek end; function Prvek( Hodnota: integer; Dalsi: PPrvek ): PPrvek; var n: PPrvek; begin new( n ); n^.Hodnota := Hodnota; n^.Dalsi := Dalsi; Prvek := n end; procedure Vytiskni( seznam: PPrvek ); var p: PPrvek; begin { tisk: } p := seznam; while p<> NIL do begin write( p^.Hodnota,' ' ); p := p^.Dalsi end; writeln; end; var seznam: PPrvek; begin seznam := Prvek( 10, Prvek( 20, Prvek( 30, Prvek( 40, Prvek( 50, Prvek( 60, Prvek( 70, Prvek( 80, Prvek( 90, NIL ))))))))); Vytiskni( seznam ) end. var p,q: ^byte; begin writeln('------------------'); writeln( MemAvail ); writeln( MaxAvail ); new( p ); writeln( MemAvail ); writeln( MaxAvail ); new( q ); writeln( MemAvail ); writeln( MaxAvail ); dispose( p ); writeln( MemAvail ); writeln( MaxAvail ); end. type POLE = array[1..60000] of byte; var p: ^POLE; begin GetMem( p, 10000 ); p^[ 27 ] := 15; p^[ 20000 ] := 123; end. type PPrvek = ^TPrvek; TPrvek = record Hodnota: integer; Dalsi: PPrvek end; procedure PridejNaZacatek( var seznam: PPrvek; i: integer ); var n: PPrvek; begin new( n ); n^.Hodnota := i; n^.Dalsi := seznam; seznam := n end; procedure Vytiskni( seznam: PPrvek ); var p: PPrvek; begin { tisk: } p := seznam; while p<> NIL do begin write( p^.Hodnota,' ' ); p := p^.Dalsi end; writeln; end; procedure PridejNaKonec( var seznam, konec: PPrvek; i: integer ); var n: PPrvek; begin new( n ); n^.Hodnota := i; n^.Dalsi := NIL; if seznam = NIL then begin seznam := n; konec := n end else begin if konec = NIL then begin konec := seznam; while konec^.Dalsi<>NIL do { tohle muzu JENOM proto, ze vim, ze seznam<>NIL !!} konec := konec^.Dalsi end; konec^.Dalsi := n; konec := n end end; var seznam, konec, n, p: PPrvek; i: integer; begin seznam := NIL; konec := NIL; { pridani na zacatek: } for i:=1 to 30 do PridejNaZacatek( seznam, i ); Vytiskni( seznam ); for i:=1 to 20 do begin { vymazat prvni prvek: } p := seznam; seznam := seznam^.Dalsi; dispose( p ); Vytiskni( seznam ); end; { pridani na konec: } for i:=1 to 5 do begin PridejNaKonec( seznam, konec, 100*i ); Vytiskni( seznam ) end {} end. type TRodokmen = record jmeno: string; otec, matka: PRodokmen; end; PRodokmen = ^TRodokmen; = chyba type PRodokmen = ^TRodokmen; TRodokmen = record jmeno: string; otec, matka: PRodokmen; end; var rod: PRodokmen; begin { new( rod ); } rod^.jmeno := 'Ibrahim ib Jakub Ibn xyz et cetera '; rod^.jmeno := 'Ted'; new( rod^.otec ); rod^.otec^.jmeno := 'Fred' end.