Ciao ragazzi mi sapete dire come fare una funzione che mi inverte una lista?
esempio:
2->6->9->3->NULL
diventa:
3->9->6->2->NULL
grazie
Ciao ragazzi mi sapete dire come fare una funzione che mi inverte una lista?
esempio:
2->6->9->3->NULL
diventa:
3->9->6->2->NULL
grazie
se vuoi utilizzare un array per memorizzare la lista è semplice:
basta copiare l'elemento in posizione 'i' dell'array originale nella posizione 'MAX_SIZE_ARRAY-i-1' dove MAX_SIZE_ARRAY è la dimensione massima dell'array, il tutto con una semplice for che va da 0 a MAX_SIZE_ARRAY.
altrimenti se vuoi utilizzare una lista dovrai invece scorrere la lista originale e aggiungere il contenuto di ogni elemento della lista alla seconda lista, pwerò gli inserimenti deviono avvenire in testa in modo che lil primo elemento della lista originale risulta l'ultimo nella seconda lista e così via ...
spero per te che conosca le listealtrimenti ...
![]()
www.matteosteri.it
Single-linked o double-linked? Nel secondo caso è più semplice. Lista di interi o una lista generica di strutture? Prima è bene se si chiarisce questoOriginariamente inviato da maldestro
Ciao ragazzi mi sapete dire come fare una funzione che mi inverte una lista?
esempio:
2->6->9->3->NULL
diventa:
3->9->6->2->NULL
grazie
guarda io ho creato la funzione di inversione lista in questo modo. Dimmi se fa schifo o se può andare:
calcola che testa era il puntatore al primo elemento della lista, e dopo questa funzione diventa il puntatore al primo elemento della lista rovesciata. non ho usato una seconda lista, ma ho solo invertito tutti i puntatori ->nextcodice:Num *Reverse(struct numeri *testa) { struct numeri *aux, *x; aux = testa; x = aux; testa = testa->next; aux = testa; testa = testa->next; aux->next = x; x->next = NULL; while(testa->next != NULL){ x = aux; aux = testa; testa = testa->next; aux->next = x; } testa->next = aux; return testa; }
ti piace fatto cosi?