program esimerkki;

import  tra;


procedure purge (var L : LIST);
	var p, q, r : LIST_POSITION;
begin
	p := LIST_FIRST(L);
	while p <> LIST_EOL(L) do begin
		q := LIST_NEXT(L, p);
		while q <> LIST_EOL(L) do
			if LIST_SAME(L, LIST_RETRIEVE(L, p),
						LIST_RETRIEVE(L, q)) then begin
				r := q;
				q := LIST_NEXT(L, q);
				LIST_DELETE(L, r)
				end
			else
				q := LIST_NEXT(L, q);
		p := LIST_NEXT(L, p)
	end
end;

(* pääohjelma *) 

var oma : LIST;
    p : LIST_POSITION;

begin

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

	LIST_PRINT(oma); writeln;

	purge(oma);

	LIST_PRINT(oma); writeln;
(*
	p := INT_LIST_LOCATE(oma, 5);

	writeln(INT_LIST_RETRIEVE(oma, p));


 	p := LIST_NEXT(oma, p);

	INT_LIST_INSERT(oma, p, 6);

	 
	INT_LIST_INSERT(oma, p, 3);

	LIST_PRINT(oma); writeln;

	purge(oma);

	LIST_PRINT(oma); writeln;
*)
	LIST_FREE(oma);

end.
