Public feed #378307

Mine

public text v1 · immutable
Raw Edit
·published 2007-03-02 12:48 UTC
rendered paste body
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.