inversione di numeri!!

davide84

Utente Attivo
45
0
Ciao a tutti, ho bisogno di chiedervi una cosa:
nel mio codice inserisco dei numeri in lista tramite il seguente frammento di codice:

int inserisci(struct cella **testa,int valore)
{
struct cella *nuovo,*temp,*precedente;
nuovo=(struct cella*)malloc(sizeof(struct cella));
if(nuovo==NULL)
{
printf("Impossibile inserire il numero, memoria insufficiente\n");
return 1;
}

nuovo->valore=valore;
nuovo->next=NULL;
nuovo->prec=NULL;

precedente=NULL;
temp=*testa;

if(*testa==NULL)
{
*testa=nuovo;
return 0;
}

while(temp!=NULL)
{
precedente=temp;
temp=temp->next;

}

precedente->next=nuovo;
nuovo->next=NULL;
nuovo->prec=precedente;

return 0;
}

adesso io avrei bisogno di invertire questi numeri cioè:
se prima il mio codice lavorava con la serie di numeri 5 6 3 2 7 ora ho bisogno che lavori con la serie 7 2 3 6 5....qualcuno ha qualche idea...
grazie a tutti.....
 

shade81

Nuovo Utente
20
0
Nn so di preciso se ti serve lavorare con la sequenza invertita solo in varie funzioni oppure per tutto il resto del programma...
cmq non essendo una lista doppiamente concatena (di solito se ci serve lavorare anche all'inverso si usano due puntatori uno al primo nodo e uno che punta all'ultimo) l'unica soluzione che mi viene in mente è che tu scorra la lista fino a quando next=null dopo di che puoi andare a ritroso con il puntatore previous all'interno del nodo. (puoi salvarti la sequenza in un array x lavorarci meglio oppure in una lista di appoggio..
Cmq ti consiglio di rivedere se puoi la tua lista e caso mai di usare un doppio puntatore.
CIAO
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili