Unit lista; {P.M. - 2. fv., 10. gyak., HBV} interface type telem=integer; tlistaelemmut=^tlistaelem; tlistaelem=record ertek:telem; kov:tlistaelemmut; end; tlista=object private fej:tlistaelemmut; akt:tlistaelemmut; hiba:boolean; public procedure ures; function ures_e:boolean; procedure elejere; procedure kovetkezore; procedure elemodosit(e:telem); function elemeretek:telem; procedure beszurele(e:telem); procedure beszurmoge(e:telem); 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; function tlista.elemertek:telem; begin if ures_e then hiba:=true else elemertek:=akt^.ertek; end; procedure tlista.elemodosit(e:telem); begin if ures_e then hiba:=true else akt^.ertek:=e; end; function hibas_e:boolean; begin hibas:=hiba; hiba:=false; end; procedure tlista.beszurmoge(e:telem); begin new(uj); { Ha nem sikerult lefoglalni, akkor "nil"-el ter vissza } if uj<>nil then begin uj^.ertek:=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; else hiba:true; end; procedure tlista.beszurele(e:telem); begin new(uj); if uj<>nil then begin uj^.ertek:=e; uj^.kov:=nil; if ures_e then begin fej:=uj; akt:=uj; end else begin uj^.kov:=akt^.kov; akt^.kov:=uj; uj^.ertek:+akt^.ertek; akt^.ertek:=e; end; else hiba:=true; end; end; procedure tlista.kihagy; 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;