Public feed #378278

Unnamed

public text v1 · immutable
Raw Edit
·published 2007-03-02 12:09 UTC
rendered paste body
program p11;

type sarasas = ^saraso_irasas;
	saraso_irasas = record
	data:integer;
	prev:sarasas;
	next:sarasas;
end;

procedure sarasas_iterpti_i_gala(var sar:sarasas; data:integer);
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:integer):integer;
var tmp:sarasas;
	rez, radome:integer;
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);
		if (tmp^.data = data) then
		begin
			writeln('elementas rastas, jo numeris yra: ', rez); 
			inc(radome);
		end;

		tmp := tmp^.next;
	end;
	sarasas_spauzdinti_elementus := radome;
end;

var s:sarasas;
	c:integer;
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.