unit lista0; interface type elemtip=record tav:byte; volte:boolean; end; Telem=array[1..100,1..100] of elemtip; tlistaelemmut=^tlistaelem; tlistaelem=record ertek:telem; kov:tlistaelemmut; end; tlista=object (* l.akt^.ertek[x,y].tav stb. *) private fej:tlistaelemmut; hiba:boolean; public akt:tlistaelemmut; procedure ures; function ures_e:boolean; procedure elejere; procedure kovetkezore; procedure elemmodosit(x,y:byte; e:elemtip); {function elemeretek:telem;} {procedure beszurele(e:telem);} procedure beszurmoge(x,y:byte; e:elemtip); function vege_e:boolean; function hibas_e:boolean; {procedure kihagy;} end; implementation procedure tlista.ures; begin fej:=nil; akt:=nil; hiba:=false; end; function tlista.ures_e:boolean; begin ures_e:=(fej=nil); end; procedure tlista.elejere; begin akt:=fej; end; procedure tlista.kovetkezore; begin if ures_e then hiba:=true else if vege_e then hiba:=true else akt:=akt^.kov; end; function tlista.vege_e:boolean; begin if ures_e then hiba:=true else vege_e:=(akt^.kov=nil); end; procedure tlista.elemmodosit(x,y:byte; e:elemtip); begin if ures_e then hiba:=true else akt^.ertek[x,y]:=e; end; function tlista.hibas_e:boolean; begin hibas_e:=hiba; hiba:=false; end; procedure tlista.beszurmoge(x,y:byte; e:elemtip); var uj:tlistaelemmut; begin new(uj); { Ha nem sikerult lefoglalni, akkor "nil"-el ter vissza } if (uj<>nil) then begin uj^.ertek[x,y]:=e; uj^.kov:=nil; if ures_e then begin fej:=uj; akt:=uj; end else begin uj^.kov:=akt^.kov; akt^.kov:=uj; akt:=uj; end; end else hiba:=true; end; {procedure tlista.kihagy; var elozo:tlistaelemmut; begin if ures_e then hiba:=true else begin if akt=fej then begin fej:=akt^.kov; dispose(akt); akt:=fej; end else begin elozo:=fej; while elozo^.kov<>akt do elozo:=elozo^.kov; elozo^.kov:=akt^.kov; dispose(akt); akt:=elozo; end; end; end;} end.