program p11; Uses sysutils; type sarasas = ^saraso_irasas; saraso_irasas = record data:string; prev:sarasas; next:sarasas; end; procedure sarasas_iterpti_i_gala(var sar:sarasas; data:string); var tmp, ntmp:sarasas; begin if (sar = NIL) then begin new(sar); sar^.prev := NIL; sar^.next := NIL; sar^.data := data; exit; end; tmp := sar; while (tmp^.next <> NIL) do tmp := tmp^.next; new(ntmp); ntmp^.data := data; ntmp^.next := NIL; ntmp^.prev := tmp; tmp^.next := ntmp; end; procedure sarasas_naikinti(var sar:sarasas); var tmp:sarasas; begin if (sar = NIL) then begin exit; end; tmp := sar; while (tmp^.prev <> NIL) do tmp := tmp^.prev; while (sar <> NIL) do begin tmp := sar^.next; dispose(tmp); sar := tmp; end; end; function sarasas_spauzdinti_elementus(var sar:sarasas; data:string):string; var tmp:sarasas; rez, radome, cmpr:integer; stringas:string; begin if (sar = NIL) then begin sarasas_spauzdinti_elementus := '0'; exit; end; tmp := sar; while (tmp^.prev <> NIL) do tmp := tmp^.prev; rez := 0; radome := 0; while (tmp <> NIL) do begin inc(rez); cmpr := AnsiCompareStr(tmp^.data, data); if cmpr = 0 then begin writeln('elementas rastas, jo numeris yra: ', rez); inc(radome); end; tmp := tmp^.next; end; Str(radome, stringas); sarasas_spauzdinti_elementus := stringas; end; var s:sarasas; c:string; begin s := NIL; writeln(' == Veskite skaicius, seka uzbaikite nuliu =='); while (true) do begin readln(c); if (c = '0') then break; sarasas_iterpti_i_gala(s, c); end; writeln(' == Iveskite elementa, kuri skaiciu noretumete rasti =='); readln(c); c := sarasas_spauzdinti_elementus(s, c); writeln(' == Radome ', c, ' tokiu elementu =='); sarasas_naikinti(s); readln; end.