Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    1

    [C++]eliminare elementi da liste concatenate

    Ciao a tutti ho un problema con un esercizio di c++...
    data una lista non vuota e un intero k devo eliminare dalla lista(dall'inizio) tanti nodi quanto è k.
    es k=2 elimino i primi 2 nodi. Fatto ciò devo restituire la listamodificata. io ho fatto così:
    struct nodo
    {
    int info;
    nodo* next;
    nodo(int a=0, nodo* b=0){info=a;next=b;}
    };


    nodo* dealloca_k_nodi(nodo* P, int k)
    {
    while(k>0)
    {
    nodo* t=P->next;
    delete P;
    P=dealloca_k_nodi(t, k-1);
    return P;
    }
    P->next=dealloca_k_nodi(p->next, k);
    return P;
    }


    void stampa(nodo* P)
    {
    cout<< P->info << ' ';
    stampa(P->next);
    }


    int main()
    {
    int k=3;
    nodo* P=new nodo(1,new nodo(2,new nodo(3,new nodo(1,new nodo(9,new nodo(1,0))))));
    P=dealloca_k_nodi(P,k);
    stampa(P);
    cout << endl;
    }
    mi da segmentation fault... non so dove sbattere la testa... sicuramente sarà un errore stupido...(spero)
    ringrazio in anticipo per eventuali risposte

  2. #2
    codice:
    nodo *dealloca_k_nodi( nodo *P, int &k )
    {
        while( P && k>0 )
        {
            nodo *t = P->next;
            delete P;
            P = dealloca_k_nodi( t, --k );
        }
        return P;
    }
    
    
    void stampa(nodo* P)
    {
        if( P )
        {
            cout<< P->info << ' ';
            stampa(P->next);
        }
    }
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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