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

    [c++] grafo - funzione merge

    Salve,
    ho realizzato un grafo. In questa struttura manca la funzione merge il cui protototipo è
    il seguente:
    codice:
    void merge(MGraph grafo);
    Il problema di questa funzione è che l'instanza di MGraph che invoca questo metodo deve poter prendere le informazioni memorizzate all'intero del'istanza di MGraph presa come parametro. La soluzione più ovvia a questo problema sarebbe usare 'friend', ma una classe, a quanto ho capito dal mio compilatore, non può essere friend di se stessa.
    Come si può risolvere questo problema?
    di seguito la classe MGraph affinchè possiate contestualizzare il problema:
    codice:
    /*
        Questa classe implementa la struttura grafo(non-)orientato realizzato mediante matrice di
       adiacenza
        Il puntatore a puntatore Matrix rappresenta la matrice di adiacenza nella quale sono memorizzati
       gli archi
        Il puntatore AVertex rappresenta il vettore in cui sono memorizzate le informazioni sui 
       vettori
        La variabile size indica la dimensione reale del vettore e della matrice
        La variabile Vsize indica il numero di vertici presenti nel grafo
        La variabile Asize indica il numero di archi presenti nel grafo
        Il valore booleano oriented indica se il grafo è orientato o meno
        AType e VType indicano rispettivamente il tipo di valore dell'arco è il valore del vertice
        MArc e MVertex sono rispettivamente il nodo-arco e il nodo-vertice    
    */
    template<class AType, class VType>
    class MGraph: public Graph<AType,VType>{
          private:     
          MArc<AType>      ** Matrix;
          MVertex<VType>    * AVertex;
          
          int  size;
          int Vsize;
          int Asize;
          
          bool oriented;        
          
          int getPos(VType v);
          public:
          MGraph(bool orientation);
          ~MGraph();
                       
          bool isEmpty();
          int    getNumArc();
          int    getNumVertex();
          bool   isAdjacent(VType vert1, VType vert2);
          void   insertVertex(VType vert);
          void   insertArc(VType vert1,VType vert2,AType arc);
          void   removeVertex(VType vert);
          void   removeArc(VType vert1,VType vert2);      
    };
    Grazie!

  2. #2

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.