Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti,
vengono subito al sodo, sperando che qualcuno mi possa aiutare.
Non riesco a far funzionare il ciclo do while seguente :
Codice sorgente - presumibilmente C/C++
struct elemento *puntLista, *puntLista2;
//creo una lista
puntLista = creaLista();
//la copio
puntLista2 = puntLista;
do {
//funzione che modifica la lista
puntLista = modifica(puntLista);
visualizza(puntLista);
//aggiorno puntLista2
puntLista2 = puntLista;
}while (puntLista2 != puntLista);
Con questo ciclo dovrei continuare a modificare la lista puntLista con un algortimo che nn sto a descrivere fino a quando questa lista ha condizioni che permettano la modifica. Quando ho semplificato tutto il semplificabile mi dovrei fermare. Dunque ho pensato di creare una copia della vecchia puntLista (puntLista2) modificarla e poi ricontrollare che puntLista fosse uguale o meno puntLista2. Se sono uguali vuol dire che nn ho potuto modificare nulla e quindi mi fermo, altrimenti continuo a modificare la lista.
il problema sta nel fatto che quando vado a fare puntLista2 = puntLista, puntLista2 nn copia tutti i valori di puntLista ma ci punta soltanto, quindi quando vado a modificare puntLista si modifica anche puntLista2. Qualcuno sa come posso fare affinchè non accada questo? Cioè cosa devo fare per creare una copia a sè stante di puntLista??
Grazie mille!!
Ultima modifica effettuata da privi87 il 24/04/2007 alle 11:04
Trattandosi appunto di puntatori a struttura, nel tuo codice
Codice sorgente - presumibilmente Plain Text
puntLista2 = puntLista;
}while (puntLista2 != puntLista);
Crea ovviamente una condizione che sarà sempre vera e di conseguenza il ciclo non si ferma più. Per verificare che le due strutture non contenghino gli stessi valori, devi per forza controllare ogni valore della prima con ogni valore della seconda e di conseguenza, creare un'apposita funzione che lo faccia.