type
TipoIntero = integer;
TipoElemLista = TipoIntero;
TipoInsInteri = TipoLista;
function UgualeElemento (intero1, intero2: TipoIntero): boolean;
begin
UgualeElemento := (intero1 = intero2)
end;
procedure InitInsInteri (var ins: TipoInsInteri);
begin
InitLista(ins)
end;
function TestInsiemeVuoto (ins: TipoInsInteri): boolean;
begin
TestInsiemeVuoto := TestListaVuota(ins)
end;
procedure InserisciIntero (var ins: TipoInsInteri; intero: TipoIntero);
begin
if not EsisteInLista(ins, intero) then
InserisciTestaLista(ins, intero)
end;
procedure EliminaIntero (var ins: TipoInsInteri; intero: TipoIntero);
begin
CancellaElementoLista(ins, intero)
end;
function VerificaAppartenenza (ins : TipoInsInteri;
intero : TipoIntero): boolean;
begin
VerificaAppartenenza := EsisteInLista(ins, intero)
end;
procedure Unione (ins1, ins2: TipoInsInteri; var ins_unione: TipoInsInteri);
var
intero : TipoIntero;
begin
CopiaLista(ins1, ins_unione);
while not TestListaVuota(ins2) do
begin
TestaLista(ins2, intero);
if not EsisteInLista(ins1, intero) then
InserisciTestaLista(ins_unione, intero);
RestoLista(ins2)
end
end;
procedure Intersezione (ins1, ins2: TipoInsInteri; var ins_int: TipoInsInteri);
var
intero : TipoIntero;
begin
InitLista(ins_int);
while not TestListaVuota(ins1) do
begin
TestaLista(ins1, intero);
if EsisteInLista(ins2, intero) then
InserisciTestaLista(ins_int, intero);
RestoLista(ins1)
end
end;
procedure Complemento (ins: TipoInsInteri; var ins_compl: TipoInsInteri);
begin
writeln('ERRORE: la rappresentazione scelta NON permette di implementare');
writeln(' l''operazione di complemento di un insieme');
writeln('Viene restituito l''insieme vuoto');
InitLista(ins_compl);
end;