O rekurzi --------- Vstup: řada čísel, výstup: součet vstupní řady. S = a1 + a2 + ... +aN S:=0; while {není konec dat} do begin {získej hodnotu a} S:=S+a end; Jiná definice: Si = Si-1 + ai S0 = 0 function S:real; var a:real; begin if {není konec dat} then begin read(a); S:=S+a end else S:=0 end; Obrácení posloupnosti: procedure Obrat; var X: string; begin if not eof do begin readln(X); Obrat end; writeln(X) end; ======================================== Význačné abstraktní datové typy ------------------------------- - Seznam - Fronta (Prioritní fronta) - Zásobník - Stromové struktury - Vyhledávací tabulka - Graf ------------------------------------------- Stromy ------ - nepravidelné - pravidelné - n-ární - ternární - binární - uspořádané Operace ------- Implementace ------------ B-strom (speciální binární strom s nejvýše 2 následníky uzlů) Datové prvky: type TypData = longint; UkUzel = ^Uzel; Uzel = record Data: TypData; Vlevo, Vpravo: UkUzel; end; Tree = UkUzel; procedure Init(var T: Tree); begin T:=nil end; procedure Insert(var T: Tree; E: TypData); begin if T=nil then begin new(T); T^.Data:=E; T^.Vlevo:=nil; T^.Vpravo:=nil end else if E<=T^.Data then Insert(T^.Vlevo, E) else Insert(T^.Vpravo, E) end; procedure InOrder(T: Tree); begin if T<>nil then begin InOrder(T^.Vlevo); writeln(T^.Data); InOrder(T^.Vpravo) end; end; var S: Tree; C: longint; begin Init(S); while not eof do begin readln(C); Insert(S,C) end; InOrder(S); end. =============================== Průprava: -- implementace obyčejného lineárního dynamického jednosměrného seznamu s operacemi: - vložení prvku (na začátek, za/před vybraný prvek, na konec) - odstranění libovolného prvku - zjištění počtu prvků, výpisy, prohledávání Domácí úloha: ------------- Implementujte následující abstraktní datové typy, a to: -- v "obyčejném" strukturovaném tvaru -- v objektovém tvaru -- s obecnými datovými položkami -- vždy v programové jednotce (modulu) -- s variantami konkrétních typů (pole, dyn. struktury, soubory bez udání typu). Seznamy: - zásobník - fronta - prioritní fronta - obecný seznam (jednosměrný, dvousměrný, cyklický) Stromy: - obecný strom - binární strom (uspořádaný ls<=ols,ps) Vyhledávací tabulka: - obecná (konstruovaná různými jinými typy) - tabulka s rozptýlenými hesly - stromové hledání Graf: - obecný graf Řídké pole: - obecné - trojúhelníková matice