[C] Cambiare puntatore ad una lista

di il
2 risposte

[C] Cambiare puntatore ad una lista

Vi espongo il mio problema .. ho un oggetto A e un oggetto B..entrambi contengono una lista..dovrei cancellare B pero' copiando la sua lista in A..il problema e' che facendo a->list=b->list e cancellando B,perdo anche il riferimento in A..come potrei fare?

mi spiego meglio..

prima: A : list=NULL
B : list=3 ->4 ->5->6

dopo : A : list=3 ->4 ->5->6
B= NULL

se faccio a->list=b->list e poi faccio free(b->list) perdo anche a->list.. non so come venirne fuori..

2 Risposte

  • Re: [C] Cambiare puntatore ad una lista

    Così è un po' difficile aiutarti e correggere eventuali errori, ma puoi:
    1)far puntare l'ultimo nodo della lista A invece che a null all'head della lista B;
    2)posizionarti all'ultimo nodo della lista A, di volta in volta allochi spazio e copi in ordine gli elementi di B per liberare infine lo spazio allocato a B.

    Se posti il tuo codice magari possiamo aiutarti di più.
    Ciao.
  • Re: [C] Cambiare puntatore ad una lista

    Quoto julietta aggiungendo che:

    Per la soluzione dell'aggiunta in coda basta che ti posizioni nell'ultimo elemento di A attraverso un ciclo while con condizione elemento corrente != NULL

    dopo di che appena esci dal While dovresti ritrovarti posizionato sull'ultimo elemento, a questo punto basterà collegarlo con B (head)

    oppure con un bel ciclo leggi ad uno ad uno gli elementi di b e richiami una funzione di inserimento in A.

    That's All
Devi accedere o registrarti per scrivere nel forum
2 risposte