ACCEDI

Password dimenticata?

×
Seguici su Instagram Feed RSS Seguici su YouTube
Pagina 6 di 6 PrimaPrima ... 23456
Visualizzazione risultati da 51 a 60 su 60

[C] - le liste, qualcuno ne sa qualcosa?

  1. #51
    Vivo su FdT
    Uomo 36 anni da Milano
    Iscrizione: 30/4/2005
    Messaggi: 3,821
    Piaciuto: 12 volte

    Predefinito

    Dunque, per prima cosa il while dovrebbe essere scritto così:
    while((val > (current->dato)) && (current->succ != NULL))

    Poi prova a ricontrollare questa parte:
    codice:
            if(pre==NULL)
            {
                new->succ=current;
            }
            else
            {
                post=current;
                current=new;
                new->succ=post;
                pre->succ=new;
            }
    Mi mandano a male le liste


  2. #52
    Tyler Durden
    Uomo 36 anni
    Iscrizione: 6/10/2007
    Messaggi: 16,094
    Piaciuto: 523 volte

    Predefinito

    si.. ma più che altro mi interessa sapere cosa c'è che non va in quella funzione

  3. #53
    Vivo su FdT
    Uomo 36 anni da Milano
    Iscrizione: 30/4/2005
    Messaggi: 3,821
    Piaciuto: 12 volte

    Predefinito

    Et voilà:
    Codice PHP:
    lista insord(lista mylist)
    {
        
    lista pre=NULL;
        
    lista new=NULL;
        
        
    lista current=NULL;
        
    int val;
        
        
    printf("\nINSERIRE VALORE : ");
        
    scanf("%d",&val);
        
        new = (
    listamalloc(sizeof(nodolista));
        
        new->
    dato=val;
        new->
    succ=NULL;
        
        if(
    mylist==NULL)
        {
            
    mylist=new;
            
    mylist->succ=NULL;
        }
        else
        {
            
    current=mylist//crea l'indice per scorrere la lista

            //Scorro in avanti finché non trovo un valore più grande di val
            
    while(current != NULL)
            {
                if(
    current->dato val)
                    break;
                
    pre current;
                
    current current->succ;
            }
        
            
    //vedo se il dato inserito e' il piu' piccolo di tutti
            
    if(pre == NULL)
            {
                new->
    succ mylist;
                return new; 
    //new diventa la testa della lista
            
    }
            else
            {
                
    pre->succ = new;
                new->
    succ current;
                return 
    mylist;
            }
        }
        return 
    mylist//ridondante, ma sicuro


  4. #54
    Tyler Durden
    Uomo 36 anni
    Iscrizione: 6/10/2007
    Messaggi: 16,094
    Piaciuto: 523 volte

    Predefinito

    ma l'hai scritta da capo ?

  5. #55
    Vivo su FdT
    Uomo 36 anni da Milano
    Iscrizione: 30/4/2005
    Messaggi: 3,821
    Piaciuto: 12 volte

    Predefinito

    No, ho tolto post perché non serviva e ho rivisto un po' l'algoritmo, ovvero questo:

    Codice PHP:
            //Scorro in avanti finché non trovo un valore più grande di val
            
    while(current != NULL)
            {
                if(
    current->dato val)
                    break;
                
    pre current;
                
    current current->succ;
            }
        
            
    //vedo se il dato inserito e' il piu' piccolo di tutti
            
    if(pre == NULL)
            {
                new->
    succ mylist;
                return new; 
    //new diventa la testa della lista
            
    }
            else
            {
                
    pre->succ = new;
                new->
    succ current;
                return 
    mylist;
            } 
    Se non ti è chiaro qualcosa chiedimi pure! Penso che prima ti desse errore perché nel while accedevi a un valore che non era puntato da niente:
    while(val > current->dato)
    non puoi farlo se current è NULL! Inevitabilmente, il tuo while si impallava
    Poi ci sono mille modi per risolvere i problemi legati alle liste, e io ho fatto alla mia maniera. Poi vedi tu, se ti sembra organico, altrimenti trova una soluzione simile. Su internet trovi un sacco di implementazioni, ma solo alcune sono chiare, anche da un punto di vista logico.
    Tu immagina sempre di dover "sganciare" gli elementi e di doverli tenere da parte, per poi agganciarli ad un altro elemento... è tipo art attack

  6. #56
    Tyler Durden
    Uomo 36 anni
    Iscrizione: 6/10/2007
    Messaggi: 16,094
    Piaciuto: 523 volte

    Predefinito

    mi sento terribilmente scemo.. ma perchè post non serve?

    fai scorrere current a current->succ?

    e dire pre->succ=new non è come dire current=new?

  7. #57
    Vivo su FdT
    Uomo 36 anni da Milano
    Iscrizione: 30/4/2005
    Messaggi: 3,821
    Piaciuto: 12 volte

    Predefinito

    Quote Originariamente inviata da Technics Visualizza il messaggio
    mi sento terribilmente scemo.. ma perchè post non serve?

    fai scorrere current a current->succ?

    e dire pre->succ=new non è come dire current=new?
    post non serve perché ho trovato un modo di risolvere il problema senza, ma magari bastava aggiustare leggermente il tuo algoritmo affinché tutto funzionasse. Uno degli obiettivi della programmazione è l'economia di codice e di variabili.. un puntatore in più o in meno non fa la differenza, ma quando le righe di codice diventano molte di più, le differenze si notano eccome!
    Comunque, post non è indispensabile perché hai già current->succ e pre, e puoi accedere all'elemento successivo a quello corrente usando appunto current->succ.
    La tua lista, essendo half linked, non necessita di mille mila puntatori

    Poi, pre->succ=new e current=new non sono la stessa cosa, dato che current è stato modificato precedentemente (current = current->succ).
    Prova a farti uno schemino su carta della lista, magari ti aiuta =)
    Ti posto il link ad un ottimo manuale, e per fortuna si vedono in anteprima alcune pagine dedicate alle liste. Ho usato l'edizione vecchia per anni alle superiori e anche all'uni

    Programmare in C - Google Ricerca Libri

  8. #58
    Vivo su FdT
    Uomo 36 anni da Milano
    Iscrizione: 30/4/2005
    Messaggi: 3,821
    Piaciuto: 12 volte

    Predefinito

    PS: quello che interessa a te, in questo caso, è l'immagine a pagina 364

  9. #59
    Tyler Durden
    Uomo 36 anni
    Iscrizione: 6/10/2007
    Messaggi: 16,094
    Piaciuto: 523 volte

    Predefinito

    grazie cmq su xcode il menù a tendina RUN è tutto non cliccabile

  10. #60
    Vivo su FdT
    Uomo 36 anni da Milano
    Iscrizione: 30/4/2005
    Messaggi: 3,821
    Piaciuto: 12 volte

    Predefinito

    Quote Originariamente inviata da Technics Visualizza il messaggio
    grazie cmq su xcode il menù a tendina RUN è tutto non cliccabile
    Di solito è così quando non crei il progetto. Se segui le istruzioni che ti ho dato prima riesci a compilare ed eseguire senza problemi

Pagina 6 di 6 PrimaPrima ... 23456

Discussioni simili

  1. Una soddisfazione grande... Niente + liste!
    Da jacka nel forum Amici animali
    Risposte: 4
    Ultimo messaggio: 9/7/2008, 23:57
  2. qualcuno ne capisce qualcosa?
    Da Jack Ass nel forum Internet e computer
    Risposte: 26
    Ultimo messaggio: 3/1/2008, 4:38
  3. qui qualcosa non quadra....
    Da Patu nel forum Off Topic
    Risposte: 32
    Ultimo messaggio: 21/2/2006, 21:23