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

    [C] Eliminare arco da un grafo

    Premesse queste definizioni
    codice:
    typedef struct EDGE* EDGELIST;
    struct EDGE{
        NODE nodo1;        //primo nodo dell'arco
        NODE nodo2;        //altro nodo dell'arco
        EDGELIST next;    //successivi archi
    }
    Volevo chiedervi se mi potete aiutare con un programma che elimina un arco da un grafo. Questo è il programma che ho in mente io, ma pare non funzionare:

    codice:
    void deleteArco(EDGELIST* t, NODE x, NODE y){
        if ((*t) != NULL) { 
            if( t->nodo1 == x && t->nodo2 == y){
                EDGELIST p = (*t);
                (*t) = (*t)->next;
                free(p);
            }else
                deleteArco((*t)->next, x, y);
        }
    }
    Spero possiate trovare qualche minuto del vostro tempo per aiutarmi perchè sono un neofita della programmazione e mi piacerebbe imparare!
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,563
    Compilando dovresti avere 2 errori e 1 warning che ti dicono chiaramente dove sbagli.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Hai ragione, non so perchè non mi desse gli errori, ti ringrazio!
    Quindi ecco qui il risultato corretto però comunque fa le bizze e non so se è un problema del mio compilatore (come per gli errori) o se ho fatto proprio un errore di logica:
    codice:
    void deleteArco(EDGELIST* t, NODE x, NODE y){
        if ((*t) != NULL) { 
            if( (*t)->nodo1 == x && (*t)->nodo2 == y){
                EDGELIST p = (*t);
                (*t) = (*t)->next;
                free(p);
            }else
                deleteArco(&(*t)->next, x, y);
        }
    }
    Comunque grazie ancora @scara95

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,563
    A me funziona correttamente: https://ideone.com/0KtI17
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Invece ho capito perchè a me da problemi. Ho letto su un libro di testo che se uso free(p) senza prima aver generato p con "malloc" allora può dare problemi.
    Comunque ti ringrazio per la tua disponibilità, sei stato davvero molto gentile, ti devo una birra :-D

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 © 2019 vBulletin Solutions, Inc. All rights reserved.