Datová struktura "seznam"
Vložil Prasatko, Pá, 2006-03-24 19:08
Dynamický jednosměrný seznam napsaný v Pascalu.
Klíčová slova: programování, Pascal, seznam.
Unit Seznam; interface type T = Byte; pprvek = ^Tprvek; Tprvek = object data : T; dalsi : pprvek; end; tseznam = object hlava : pprvek; iter : pprvek; pocet_prvku:longint; zarazka:pprvek; constructor vytvor; procedure vloz(d:T); procedure vloznakonec(d:T); procedure smaz(p:pprvek); function najdi(d:T):pprvek; procedure vyprazdni; procedure vypis_seznam; destructor zrus; function next:pprvek; procedure reset; function pocet_prv:longint; end; implementation constructor tseznam.vytvor; begin new(hlava); zarazka:=hlava; zarazka^.dalsi:=nil; iter:=hlava; pocet_prvku:= 0; end; procedure tseznam.vloz(d:t); var h1:pprvek; begin pocet_prvku:=pocet_prvku+1; new(h1); h1^.data:=d; h1^.dalsi:=hlava; hlava:=h1; iter:=hlava; end; procedure tseznam.vloznakonec(d:t); var h1:pprvek; begin pocet_prvku:=pocet_prvku+1; zarazka^.data:=d; new(zarazka^.dalsi); zarazka:=zarazka^.dalsi; end; procedure tseznam.smaz(p:pprvek); var x:pprvek; begin p^.data:=p^.dalsi^.data; x:=p^.dalsi^.dalsi; if p^.dalsi = zarazka then zarazka := p; dispose(p^.dalsi); p^.dalsi:=x; pocet_prvku:=pocet_prvku-1; end; function tseznam.najdi(d:T):pprvek; var x:pprvek; begin zarazka^.data:=d; x:=hlava; while x^.data<>d do x:=x^.dalsi; najdi:=x; end; procedure tseznam.vypis_seznam; var x:pprvek; begin x:=hlava; while x<>zarazka do begin write(x^.data); x:=x^.dalsi; end; writeln(''); end; procedure tseznam.vyprazdni; var x:pprvek; begin x:=hlava; while x<>zarazka do begin hlava:=x^.dalsi; dispose(x); x:=hlava; end; end; destructor tseznam.zrus; begin if hlava<>zarazka then vyprazdni; dispose(hlava); hlava:=nil; zarazka:=nil; end; procedure tseznam.reset; begin iter:= hlava; end; function tseznam.next:pprvek; begin if iter=zarazka then next:=nil else begin next := iter; iter := iter^.dalsi; end; end; function tseznam.pocet_prv:longint; begin pocet_prv:=pocet_prvku; end; end.
- 4928 x přečteno
Tags: