Liste

di il
27 risposte

27 Risposte - Pagina 2

  • Re: Liste

    Ho provato a fare come hai detto tu, ma mi dava lo stesso problema.Ho cambiato il codice abolendo quel while e il codice funziona in parte. In pratica questa volta ,se io scrivo 6 numeri in questo modo :2 2 3 4 4 5. e metto come numero di ripetizioni 2, mi salverà nella seconda lista il 2 il 4 e il 5.E il programma funziona sempre in questo modo:due li fa giusti e il terzo lo sbaglia
    struct elementi *controllo(struct elementi *top,int k,struct elementi *top2){
        int c,volte=0;
    for(;top!=NULL;top=top->next){
            c=top->x;
        if(c==top->x)
            volte++;
        if(volte==k){
            top2=coda(top2,c);
            volte=0;
        }
    }
    return top2;
        }
    
  • Re: Liste

    antonx ha scritto:


    ho provato a fare come hai detto tu, ma mi dava lo stesso problema
    Si vede che non hai apportato le modifiche correttamente, ma non le hai mostrato ...
  • Re: Liste

    Intendi la soluzione col puntatore?
  • Re: Liste

    Ovviamente sì ...
  • Re: Liste

    Se devo essere sincero oregon non ho capito bene come implementarlo, ho capito cosa vuoi dire coi puntatori,ma io prima ho agito facendo una copia della lista, e non credo sia corretto
  • Re: Liste

    Insomma dici di aver provato come ti avevo detto e che non funzionava ma non era vero ...

    Beh, non ho proprio tutto questo tempo e pazienza ...
  • Re: Liste

    No in pratica lo avevo fatto facendo una copia della mia lista, ma non ha funzionato.Comunque se non hai tempo non preoccuparti capisco,grazie comunque dell'aiuto che mi hai dato
  • Re: Liste

    Non devi copiare la lista ... usa un secondo puntatore, è semplicissimo. Hai scritto quel codice e quindi dovresti farlo senza problemi.
  • Re: Liste

    Fare una cosa del genere?:
    struct elementi *controllo(struct elementi *top,int k,struct elementi *top2){
        struct elementi *res=NULL;
        int c,volte=0;
        res=top;
        while(res!=NULL){
        c=res->x;
    for(;top!=NULL;top=top->next){
        if(c==top->x)
            volte++;
    }
        if(volte==k){
            top2=coda(top2,c);
            volte=0;
        }
        res=top->next;
    }
    return top2;
        }
  • Re: Liste

    Sì, ma qui

    res=top->next;

    perché continui ad usare top?
  • Re: Liste

    Oregon grazie davvero tanto per l'aiuto ora il programma funziona.Scusa per tutti i grattacapi che ti ho causato.Comunque in pratica, muoversi in due cicli diversi con lo stesso puntatore, non è una buona idea
  • Re: Liste

    Di nulla ...
  • Re: Liste

    Scusate ho notato che il programma non funziona in pratica cosa fa:
    se inserisco 2 2 3 e voglio che prende il numero che si ripete due volte,il programma mi darà in output solo il valore 2.
    se inserisco 2 2 3 3 4 e voglio sempre che mi dia il valore che si ripete 2 volte mi darà in output sempre il 2. Se invece inserisco 3 2 2 1 in output non mi darà nulla
Devi accedere o registrarti per scrivere nel forum
27 risposte