Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    (C) passaggio di parametri

    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

  2. #2
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    In C++ riesci a farlo facilmente (overloading, puntatori alle classi base...), ma in C dubito...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.