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?
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?
Un puntatore ?
Experience is what you get when you don’t get what you want
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...
Intendevo:
salva l'indirizzo della nuova testa in un puntatore
Experience is what you get when you don’t get what you want
si lo so...l'idea è quella...ma nn funziona...! come faccio a salvare l'indirizzo della testa? potrestifarmi un esempio veloce?thanks
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
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...
è evidente che c'è qualche errore ... posta posta
Experience is what you get when you don’t get what you want
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...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);
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