Grafo orientato

di il
33 risposte

33 Risposte - Pagina 2

  • Re: Grafo orientato

    Non la funzione ma COME L'HAI USATA
  • Re: Grafo orientato

    oregon ha scritto:


    Non la funzione ma COME L'HAI USATA
    ho risolto e non era ne la funzione e ne il modo in cui lo usavo..c'erano errori nel main e non nelle funzioni
  • Re: Grafo orientato

    Quali errori nel main? Perché non dici che usavi male la initGraph nel main?

    Hai risolto? Certi che sei un bel tipo!!!
  • Re: Grafo orientato

    oregon ha scritto:


    Quali errori nel main?
    questa:
    Graph *G = NULL;
    Invece è
    struct TGraph *G = NULL;
  • Re: Grafo orientato

    Intanto hai scritto una typefed (che evidentemente ancora non capisci) quindi, semmai è

    Graph G = NULL;

    e poi NON HAI ANCORA RISOLTO.

    A meno che tu non stia usando un altro tra i tanti mille sorgenti che posti di volta in volta. Io mi riferisco al main che hai postato nel PRIMO post di questo thread. Quanto vale G dopo che crei il grafo?
  • Re: Grafo orientato

    Ciao.
    hai definito:
    typedef struct TGraph* Graph;


    In futuro, ritorna sempre la struttura. Da Init ritorna il Grafo.
    A presto.
  • Re: Grafo orientato

    oregon ha scritto:


    Intanto hai scritto una typefed (che evidentemente ancora non capisci) quindi, semmai è

    Graph G = NULL;

    e poi NON HAI ANCORA RISOLTO.

    A meno che tu non stia usando un altro tra i tanti mille sorgenti che posti di volta in volta. Io mi riferisco al main che hai postato nel PRIMO post di questo thread. Quanto vale G dopo che crei il grafo?
    
    #include <stdio.h>
    #include <stdlib.h>
    #define NDEBUG
    #include <assert.h>
    
     struct TList {
        int target;
        struct TList* next;
    };
    
    typedef struct TList* List;
    
    struct TGraph {
        List *adj;
        int nodes_count;
    };
    
    
    typedef struct TGraph* Graph;
    
    Graph initGraph(int nodes_count);
    List appendNodeList(List L, int target);
    List initNodeList(int info);
    void addEdge(Graph G, int source, int target);
    void printList(List L);
    void printGraph(Graph G);
    void printGraphAux(Graph G);
    
    
    Graph initGraph(int nodes_count) {
        Graph G = malloc(sizeof(struct TGraph));
        G->adj = calloc(nodes_count, sizeof(List));
        G->nodes_count = nodes_count;
        return G;
    }
    
    void addEdge(Graph G, int source, int target) {
        assert(G != NULL);
        assert(source < G->nodes_count);
        assert(target < G->nodes_count);
        if (source != target) {
            G->adj[source] = appendNodeList(G->adj[source], target);
        }
        
    }
    
    List appendNodeList(List L, int target) {
        if (L != NULL) {
            if (L->target != target) {
                L->next = appendNodeList(L->next, target);
            }
        } else {
            L = initNodeList(target);
        }
        return L;
    }
    
    List initNodeList(int info) {
        List L = (List)malloc(sizeof(struct TList));
        L->target = info;
        L->next = NULL;
        return L;
    }
    
    
    void printGraphAux(Graph G) {
        if (G != NULL) {
            int x = 0;
            for (x = 0; x < G->nodes_count; x++) {
                printf("%d -> ", x);
                printList(G->adj[x]);
                printf("\n");
            }
        }
    }
    
    void printGraph(Graph G) {
        printGraphAux(G);
        printf("\n\n");
    }
    
    
    void printList(List L) {
        if (L != NULL) {
            printf(" %d ", L->target);
            printList(L->next);
        }
    }
    
    int main()
    {
        
        int n,e,i,v,u;
        struct TGraph *G = NULL;
        
        printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * *  \n Benvenuto: grado massimo uscente ed entrante del grafo\n* * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n");
    
        
        printf("\nEnter the number of vertices - ");
        scanf("%d",&n);
    
        G = initGraph(n);
        printf("\nEnter the number of edges - ");
        scanf("%d",&e);
    
        printf("\nVertices are - ");
        for(i=0;i<n;i++)
           printf("%d ",i);
    
    
        printf("Enter the edges separated by space - ");
        for(i=0;i<e;i++)
        {
            scanf("%d%d",&v,&u);
            addEdge(G,v,u);
        }
        
        printGraph(G);
        printf("\n\n");
    
    
    }
    
    Questo sto usando
  • Re: Grafo orientato

    TheRT0C ha scritto:


    Ciao.
    hai definito:
    typedef struct TGraph* Graph;


    In futuro, ritorna sempre la struttura. Da Init ritorna il Grafo.
    A presto.
    non l'ho definito cosi
  • Re: Grafo orientato

    Vedi !?

    Codici diversi nello stesso thread ...

    Nel main iniziale

    initGraph(n);

    e adesso

    G = initGraph(n);

    Secondo te uno ti può mai seguire in un discorso senza perdere tempo?

    Ok .... non succederà più ... non risponderò più a nessun thread che posterai, mi dispiace.
  • Re: Grafo orientato

    oregon ha scritto:


    Vedi !?

    Codici diversi nello stesso thread ...

    Nel main iniziale

    initGraph(n);

    e adesso

    G = initGraph(n);

    Secondo te uno ti può mai seguire in un discorso senza perdere tempo?

    Ok .... non succederà più ... non risponderò più a nessun thread che posterai, mi dispiace.
    scusa allora uno non può correggere/modificare?
  • Re: Grafo orientato

    #include <stdio.h>
    #include <stdlib.h>
    #define NDEBUG
    #include <assert.h>
    
     struct TList {
        int target;
        struct TList* next;
    };
    
    typedef struct TList* List;
    
    struct TGraph {
        List *adj;
        int nodes_count;
    };
    
    
    typedef struct TGraph* Graph;
    ma in che senso non l'hai definito così? scusami nel tuo codice questo c'è scritto.
    Bastava fare Graph G=NULL;

    Se posso andare oltre alla richiesta da te posta, per darti un'indicazione. Cosa succede se ri-uso initGraph?
  • Re: Grafo orientato

    saraciao ha scritto:


    oregon ha scritto:


    Vedi !?

    Codici diversi nello stesso thread ...

    Nel main iniziale

    initGraph(n);

    e adesso

    G = initGraph(n);

    Secondo te uno ti può mai seguire in un discorso senza perdere tempo?

    Ok .... non succederà più ... non risponderò più a nessun thread che posterai, mi dispiace.
    scusa allora uno non può correggere/modificare?
    Ma non ci arrivi da sola? Se stiamo parlando di una cosa e tu la correggi LO DEVI DIRE a chi ti sta parlando. No?? Magari così non perde ore della domenica inutilmente!

    Comunque, addio e mi raccomando, qui il CROSSPOSTING è vietato ... se continui su tomshw.it (o su inforge.it o altro forum contemporaneamente) il thread qui viene chiuso.
  • Re: Grafo orientato

    TheRT0C ha scritto:


    #include <stdio.h>
    #include <stdlib.h>
    #define NDEBUG
    #include <assert.h>
    
     struct TList {
        int target;
        struct TList* next;
    };
    
    typedef struct TList* List;
    
    struct TGraph {
        List *adj;
        int nodes_count;
    };
    
    
    typedef struct TGraph* Graph;
    ma in che senso non l'hai definito così? scusami nel tuo codice questo c'è scritto.
    Bastava fare Graph G=NULL;

    Se posso andare oltre alla richiesta da te posta, per darti un'indicazione. Cosa succede se ri-uso initGraph?
    Quindi senza scrivere
    Struct Graph *G
    Giusto?
  • Re: Grafo orientato

    Si, l'utente oregon te lo aveva segnalato.
  • Re: Grafo orientato

    TheRT0C ha scritto:


    Si, l'utente oregon te lo aveva segnalato.
    Va bene grazie...ma ora per calcolarmi il massimo grado entrante ed uscente come posso fare?
Devi accedere o registrarti per scrivere nel forum
33 risposte