Algoritmi e strutture dati

Realizzazione in C di un insieme Mfset

Supponiamo che l’ insieme sia formato dagli interi da 1 a n e che l’insieme A denoti la sua cardinalità, ovvero A = n. La foresta di alberi che modellano le componenti di Mfset può essere rappresentata tramite un unico vettore dei padri dove inizialmente ciascun nodo, ogni volta che diventa radice, punterà a se stesso. Faremo uso anche di una variabile cardinalità per mantenere le dimensioni di ogni singolo componente individuato tramite il valore della propria radice.

Una volta definita la struttura degli elementi dell’ assieme, creiamo una Mfset passando alla funzione creamfset l’ insieme A.

Inizialmente ciascun nodo punterà a se stesso e le dimensioni (cardinalità) di ogni singolo componente saranno tutte uguale a zero. La funzione trova, che restituisce l’ identificatore di un componente, avrà il seguente aspetto:

Per capire meglio la seconda parte ricorsiva guardare prima la funzione fondi:

La “fondi” richiama due volte la funzione "trova" e poi utilizza il vettore dimensione per stabilire qual è l ‘albero più piccolo la cui radice diventa figlio della radice dell’ albero più grande.























































Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.