[C]Lista adiacenza

di il
2 risposte

[C]Lista adiacenza

Dove posso trovare esempi di codice in C dove viene rappresentato un grafo con liste di adiacenza?

2 Risposte

  • Re: [C]Lista adiacenza

    https://www.iprogrammatori.it/forum-programmazione/cplusplus/nuovo-problema-lista-puntatore-t10786.html#p8468921

    Basta cecrcare
  • Re: [C]Lista adiacenza

    Dovrei solo stampare e creare un grafo con liste di adiacenza il codice sottostante va bene??
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    #define MAX 100
    
    struct nodo {
      int info;
      struct nodo *next;
    };
    
    
    /*
     *	Acquisisce in input una sequenza di n interi e la memorizza
     *	in una lista; restituisce l'indirizzo del primo elemento della lista.
     */
    
    struct nodo *leggiLista(void) {
      struct nodo *p, *primo = NULL;
      int i, n;
      printf("Numero di elementi: ");
      scanf("%d", &n);
      printf("Elementi della lista: ");
      for (i=0; i<n; i++) {
        p = malloc(sizeof(struct nodo));
        scanf("%d", &p->info);
        p->next = primo;
        primo = p;
      }
      return(primo);
    }
    
    /*
     *	Acquisice in input le n liste di adiacenza dei vertici del grafo G.
     */
    
    int leggiGrafo(struct nodo *V[]) {
      int i, n;
      printf("\nNumero di vertici del grafo: ");
      scanf("%d", &n);
      for (i=0; i<n; i++) {
        printf("\nLista di adiacenza del vertice %d:\n", i);
        V[i] = leggiLista();
      }
      return(n);
    }
    
    /*
     *	Stampa gli elementi di una lista.
     */
    
    void stampaLista(struct nodo *p) {
      while (p != NULL) {
        printf("%d --> ", p->info);
        p = p->next;
      }
      printf("NULL\n");
      return;
    }
    
    /*
     *	Stampa le liste di adiacenza dei vertici del grafo G.
     */
    
    void stampaGrafo(struct nodo *V[], int n) {
      int i;
      printf("Liste di adiacenza del grafo:\n");
      for (i=0; i<n; i++) {
        printf("%2d: ", i);
        stampaLista(V[i]);
      }
      return;
    }
    
    
    int main(void) {
      struct nodo *V[MAX];
    
      n = leggiGrafo(V);
     
      stampaGrafo(V, n);
     
      return(0);
    }
    
    
    
    
    
    
Devi accedere o registrarti per scrivere nel forum
2 risposte