metodi ricorsivi

mail@pastecode.io avatar
unknown
c_cpp
a month ago
1.8 kB
5
Indexable
Never
int Lista::delricdisp(Cella* inizio){
    if(!inizio || !inizio->next){
        return 0;
    }

    Cella* daEliminare = inizio->next;
    inizio->next = daEliminare->next;
    int valoreDaEliminare = daEliminare->data;
    delete daEliminare;

    return valoreDaEliminare + delricdisp(inizio->next);
}

int Lista::delricpar(Cella* inizio){
    if(!inizio || !inizio->next){
        Cella* daEliminare = this->head;
        this->head = this->head->next;
        int valoreDaEliminare = daEliminare->data;
        delete daEliminare;
        return valoreDaEliminare;
    }

    if(inizio == this->head){
        return delricpar(inizio->next);
    }

    Cella* daEliminare = inizio->next;
    inizio->next = daEliminare->next;
    int valoreDaEliminare = daEliminare->data;
    delete daEliminare;
    return valoreDaEliminare + delricpar(inizio->next);
}

void Lista::delelem10(Cella *inizio){
    if(!inizio || !inizio->next){
        return;
    }

    if(inizio == this->head && inizio->data >= 10){
        Cella* daEliminare = this->head;
        this->head = this->head->next;
        delete daEliminare;

        return delelem10(this->head);
    }

    if(inizio->next->data >= 10){
        Cella* daEliminare = inizio->next;
        inizio->next = daEliminare->next;
        delete daEliminare;

        return delelem10(inizio);
    }

    return delelem10(inizio->next);
}

void Lista::sorrt(Cella *attuale){
    if(!attuale || !attuale->next){
        return;
    }

    if(attuale->data > attuale->next->data){
        int a=attuale->data;
        attuale->data = attuale->next->data;
        attuale->next->data = a;

        sorrt(this->head);
    }

    sorrt(attuale->next);
}
Leave a Comment