Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892

    [C]: eliminare duplicati da una lista

    Ciao a tutti, io da una lista di interi devo eliminare i duplicati! ho provato e vi posto il codice (che non funge)..:

    Listaint modificaric(Listaint l){
    Listaint aux; //lista di supporto
    if (l!=NULL){
    if(l->val==l->next->val){
    aux=l;
    l=l->next;
    free(aux);
    modificaric(l);
    }
    else modificaric(l->next);
    }


    dovrebbe cancellare i duplicati dei numeri...

    boh...help
    Debian Sarge 3.01a
    Slackware 10.2

  2. #2
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    help me please!
    Debian Sarge 3.01a
    Slackware 10.2

  3. #3
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    codice:
    void rimuovi_duplicati (Lista_int l) {
            Lista_int aux;
            if (l == NULL || l->next == NULL)
                    return;
            if (l->val == l->next->val)) {
                    aux = l->next;
                    l->next = aux->next;
                    free (aux);
                    rimuovi_duplicati (l);
            }
            else
                    rimuovi_duplicati (l->next);
    }

  4. #4
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    scusa, ma mi spieghi il perchè delle istruzioni dentro l'if?
    cioè.....che hai fatto^
    Debian Sarge 3.01a
    Slackware 10.2

  5. #5
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    Se devo eliminare i duplicati, posso pensare che la testa della lista non viene mai cambiata, in quanto posso eliminare i duplicati ad essa seguenti. Percui se l->val == l->next->val devo eliminare l->next, pertanto la salvo in aux, dico che il valore successivo al primo elemento è il successivo del successivo ed elimino il nodo aux, nulla di particolarmente profondo mi pare Dopodichè invoco ricorsivamente la funziona sulla nuova lista oppure sull'elemento successivo se non ho rimosso niente

  6. #6
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    si ma aux->next è vuoto mi pare, o sbaglio?
    Debian Sarge 3.01a
    Slackware 10.2

  7. #7
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    Originariamente inviato da Fabiuz
    si ma aux->next è vuoto mi pare, o sbaglio?
    Per quale motivo dovrebbe essere vuoto? E se anche fosse vuoto perchè siamo a fine lista che problemi darebbe?

  8. #8
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    perfavore, visto che non lo hai inizializzato, vorrei sapere che valore ha!
    Debian Sarge 3.01a
    Slackware 10.2

  9. #9
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Originariamente inviato da Fabiuz
    perfavore, visto che non lo hai inizializzato, vorrei sapere che valore ha!
    nn stai pensando con la mentalità dei puntatori...

    se aux = l->next allora aux->next == l->next->next
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  10. #10
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    Originariamente inviato da Ilmalcom
    codice:
    void rimuovi_duplicati (Lista_int l) {
    Esattamente cosa gli passi come parametro?

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