Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Unione liste in c

  1. #1

    Unione liste in c

    Salve sto sviluppando un programma nel quale dovrei unire due liste in c: ho utilizzato l'algoritmo qui sotto ma non riesco a capire il motivo per il quale il programma, unisce solo parte delle due liste, potete spiegarmi cosa sbaglio?

    codice:
    element head(list l){
    
    
        return l->value;
    }
    
    
    //RITORNA L'INDIRIZZO SUCCESSIVO DEL PROSSIMO ELEMENTO
    list tail(list l){
    
    
        return l->next;
    }
    
    
    list append(list l1,list l2){
    
    
        list l3;//=emptyList();
        l3=(list)malloc(sizeof(listNode));
    
    
        if((tail(l1)!=NULL)){
            
             l3->value=head(l1);
    
    
             l3->next=append(l1->next,l2);
        
        }
    
    
        else{    
    
    
    
    
        if((tail(l2)!=NULL)){
    
    
                 l3->value=head(l2);
                  
                
                  if((tail(l2->next)!=NULL)){
    
    
                      l3->next=append(l1,l2->next);
                       
                  }
    
    
                  else{
                       l3->next=NULL;
                       
                  }
            }
    
    
        }
    
    
        return l3;
    
    
    }
    Ultima modifica di LeleFT; 31-03-2015 a 16:31 Motivo: Aggiunti i tag CODE
    http://viewsoftware.it/

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Utilizza i tag code e posta la definizione dei tipi come minimo.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Senza usare tante funzioni secondarie superflue.
    codice:
    list append( list l1, list l2 )
    {
        list l3 = (list)malloc(sizeof(listNode));
        if( l1  )
        {
             l3->value = l1->value;
             l3->next  = append( l1->next, l2 );
        }
        else if( l2 )
        {    
            l3->value = l2->value;
            l3->next  = append( l1, l2->next );
        }
        else
            l3 = NULL;
        return l3;
    }
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  4. #4
    grazie
    http://viewsoftware.it/

  5. #5
    Prego, una versione più razionale (e corretta) è questa
    codice:
    list append( list l1, list l2 )
    {
        list l3 = NULL;
        if( l1 )
        {
            l3 = (list)malloc(sizeof(listNode));
            l3->value = l1->value;
            l3->next  = append( l1->next, l2 );
        }
        else if( l2 )
        {    
            l3 = (list)malloc(sizeof(listNode));
            l3->value = l2->value;
            l3->next  = append( l1, l2->next );
        }
        return l3;
    }
    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.