Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    43

    copia lista puntatori

    salve sto copiando una lista concatenata su un altra in C...ma dopo voglio la testa della nuova lista...come faccio a conservare l'indirizzo della testa che ho copiato?

  2. #2
    Un puntatore ?
    Experience is what you get when you don’t get what you want

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    43
    si certo

    dopo che ho copiato la lista, voglio visualizzare la nuova lista....ma mi serve la testa della nuova lista x visualizzarla dall'inizio...

  4. #4
    Intendevo:
    salva l'indirizzo della nuova testa in un puntatore
    Experience is what you get when you don’t get what you want

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    43
    si lo so...l'idea è quella...ma nn funziona...! come faccio a salvare l'indirizzo della testa? potrestifarmi un esempio veloce?thanks

  6. #6
    struct nodo
    ....
    nodo *testa_da_salvare;
    .....
    nodo *nuova_testa;
    ...
    nuova_testa = testa_da_salvare;
    Experience is what you get when you don’t get what you want

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    43
    già fatto ma si memorizza solo un elemento, cioè il primo...se scorro la lista c'è solo il primo elemento della lista copiata...e nn tutti gli altri! se vuoi ti scrivo il pezzo di codice...

  8. #8
    è evidente che c'è qualche errore ... posta posta
    Experience is what you get when you don’t get what you want

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    43
    codice:
        Node **tmpHash;
        Node *tmp,*tmp2;
        Lista *l;
        int dim=0;
        int i,j=0;
    
        
        // conto quanti sono i puntatori non nulli
        for(i=0;i<hashTableSize;i++)
            if(hashTable[i]!=NULL)    dim++;
        
        // creo una hash temp che contiene solo gli indici non nulli
        tmpHash=malloc(dim*sizeof(Node));
        for(i=0;i<hashTableSize;i++)
            if(hashTable[i]!=NULL)
            {
                tmpHash[j]=hashTable[i];
                j++;
            }
            
     
        tmp2 = tmpHash[0];
        
        for(j=0;j<dim;j++)
        {
            for(;tmpHash[j]!=NULL;tmpHash[j]=tmpHash[j]->next)
            {
                    tmp = malloc(sizeof(Node));
                    tmp->next =NULL;
                    if(tmp==0)
                    {
                       printf("Impossibile inserire memoria piena\n");
                       return;
                    }
                    tmp->record=tmpHash[j]->record;
                    tmp->next=tmpHash[j]->next;
            }
        }
        for(;tmp2!=NULL;tmp2=tmp2->next)
                   {
                       printf("----------------------------------------\n");
                       printf("%d \n",tmp2->record.start_time);
                       printf("%s\n",&tmp2->record.nome_job);
                       printf("%i\n",tmp2->record.priority); 
                       printf("----------------------------------------\n");   
                       
                   }
             
         free(tmp);
         free(tmpHash);
    ti spiego si tratta di una hashtable che devo visualizzare...ho creato una hashtable temp che contiene solo le liste nn nulle e poi ho creato una lista (tmp) per concatenare le varie liste. Adesso voglio visualizzare sta lista tmp ed ho copiato il puntatore di testa in tmp2...solo che l'ultimo for (tmp2) mi mostra solo il primo elemento...

  10. #10
    Puoi postare anche "Node" ?
    Stai lavorando su vettori o su liste ?
    Un'hash table si realizza mediante alberi ...
    Se devi solo visualizzarla puoi fare così:
    codice:
    for(i=0;i<hashTableSize;i++)
       if(hashTable[i]!=NULL)   
          {
          printf("----------------------------------------\n");
          printf("%d \n",hashTable[i]->record.start_time);
          printf("%s\n",hashTable[i]->record.nome_job);
          printf("%i\n",hashTable[i]>record.priority); 
          printf("----------------------------------------\n");   
          }
    Experience is what you get when you don’t get what you want

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.