program esimerkki2;

import tra;

function vertaa_listoja (var L1, L2 : LIST) : boolean;
	var	p1, p2 : LIST_POSITION;
		s : boolean;
begin
	s := true;
	p1 := LIST_FIRST(L1);
	p2 := LIST_FIRST(L2);
	while (p1 <> LIST_EOL(L1)) and
			(p2 <> LIST_EOL(L2)) do begin
		if not LIST_SAME(L1, LIST_RETRIEVE(L1, p1),
						 LIST_RETRIEVE(L2, p2)) then
			s := false;
		p1 := LIST_NEXT(L1, p1);
		p2 := LIST_NEXT(L2, p2)
		end; (* while *)
	if not (p1 = LIST_EOL(L1)) and (p2 = LIST_EOL(L2)) then
		s := false;
	vertaa_listoja := s
end; (* vertaa_listoja *)

(* pääohjelma *)

var oma, oma2 : LIST;
    p : LIST_POSITION;

begin

	INT_LIST_CREATE(oma);
	INT_LIST_CREATE(oma2);
	LIST_CONSTRUCT_RANDOM(oma, 10, 1, 5);

	LIST_PRINT(oma); writeln;

	p := LIST_FIRST(oma);
	while p <> LIST_EOL(oma) do begin
		LIST_INSERT(oma2, LIST_EOL(oma2),
			LIST_RETRIEVE(oma, p));
		p := LIST_NEXT(oma, p);
	end;


	LIST_PRINT(oma2); writeln;

	if vertaa_listoja(oma, oma2) then
		writeln('samat!')
	else
		writeln('eri');

	LIST_DELETE(oma2, LIST_FIRST(oma2));
	
	LIST_PRINT(oma2); writeln;

	if vertaa_listoja(oma, oma2) then
		writeln('samat!')
	else
		writeln('eri');


	LIST_FREE(oma);
	LIST_FREE(oma2);

end.

