ZU 4) PROGRAM SETOP(INPUT,OUTPUT); TYPE TSET=RECORD WERT:INTEGER; NEXT:^ TSET END; PROCEDURE VEREINIGE(A,B:TTSET;VAR C:TSET); (*C:=A + B*) VAR Q:TSET; PROCEDURE CP(X:TSET); (*ÅRWEITERT ÍENGE C UM ÅLEMENT X*) VAR Y:TSET; BEGIN NEW(Y);Y^.WERT:=X^.WERT;Y^.NEXT:=NIL; IF C=NIL THEN C:=Y ELSE Q^.NEXT:=Y; Q:=Y END; BEGIN (*ÍISCHE DIE GEORDNETEN ÌISTEN Á UND Â ZU Ã*) C:=NIL; WHILE (A<>NIL)AND(B<>NIL) DO BEGIN IF A^.WERTB^.WERT THEN BEGIN CP(B);B:=B^.NEXT END ELSE BEGIN CP(A);A:=A^.NEXT;B:=B^.NEXT END; END; WHILE (A<>NIL)DO BEGIN CP(A);A:=A^.NEXT END; WHILE (B<>NIL)DO BEGIN CP(B);B:=B^.NEXT END; END;(*VEREININGE*) PROCEDURE SCHNEIDE(A,B:TTSET;VAR C:TSET); (*C:=A * B*) VAR Q:TSET; PROCEDURE CP(X:TSET); (*ÅRWEITERT ÍENGE C UM ÅLEMENT X*) VAR Y:TSET; BEGIN NEW(Y);Y^.WERT:=X^.WERT;Y^.NEXT:=NIL; IF Q=NIL THEN C:=Y ELSE Q^.NEXT:=Y; Q:=Y END; BEGIN C:=NIL; WHILE (A<>NIL)AND(B<>NIL) DO BEGIN IF A^.WERT =B^.WERT THEN CP(A); IF A^.WERT<=B^.WERT THEN A:=A^.NEXT; IF B^.WERT<=A^.WERT THEN B:=B^.NEXT END END;(*SCHNEIDE*)