Premetto che devo sviluppare la cosa in C
Devo fare un algoritmo di gestione degli ABR (alberi binari di ricerca). Una soluzione al problema (senza scendere troppo nei dettagli) è di creare due strutture albero ABR:
typedef struct abrnode1
{
struct abrnode1 *sin; // puntatore al figlio sinistro
struct abrnode1 *des; // puntatore al figlio destro
int key; // numero di matricola (senza prefisso)
char nome[30];
} node1, *abr1;
typedef struct abrnode2
{
struct abrnode2 *sin; // puntatore al figlio sinistro
struct abrnode2 *des; // puntatore al figlio destro
struct abrnode1 *studenti; // puntatore alla struttura
int key; // prefisso della matricola(classe)
} node2, *abr2;
Come vedete sono entrambi degli ABR, ma hanno elementi diversi. Il problema è il seguente: vorrei implementare le funzioni di gestione degli ABR (inserimento, cancellazione, ricerca), per entrambe le strutture.
ad es la funzione ricerca
abrnode1 ricerca (abrnode1 a, x)
{
if (a->key == x) return a;
else if (x < a->key) return ricerca (a->sin,x);
else return ricerca (a->des,x);
}
L'algoritmo è identico se debbo fare la ricerca nella struttura abrnode2. C'è un modo di usare una sola funzione per entrambe le strutture ? Forse c'è un modo per passare un puntatore generico senza specificare il tipo ?
Spero di essere stato chiaro, in caso contrario mi spiego meglio![]()

Rispondi quotando