Ciao a tutti, io ho una lista di interi e con una procedura devo scambiare l'elemento che occupa l'ultimo posto con il primo!
Questo che ho appena scritto è il testo dell'esercizio .
Chi mi aiuta?
![]()
![]()
Ciao a tutti, io ho una lista di interi e con una procedura devo scambiare l'elemento che occupa l'ultimo posto con il primo!
Questo che ho appena scritto è il testo dell'esercizio .
Chi mi aiuta?
![]()
![]()
http://www.oilproject.org/ -->La Scuola On-LIne degli smanettoni!
uppino?
http://www.oilproject.org/ -->La Scuola On-LIne degli smanettoni!
typedef struct nodo *lista;
struct nodo {
int val;
lista next;
}
lista scambia(lista l)
{
lista p = l;
int aus;
while (p->next != NULL)
p = p->next;
aus = l->val;;
l->val = p->val;
p->val = aus;
return l;
}
La funzione ritorna un tipo lista.
La chiamata della funzione deve essere:
L = scambia(L);
quindi L va sia come parametro che come variabile a cui assegnare il valore di ritorno!
ma io non devo scambiare....devo portare in cima alla lista l'ultimo nodo e l'"ex" primo nodo non so dove metterlo (il testo dell'esercizio non lo specifica).
Avevo pensato di:
1-salvare in un puntatore l'indirizzo del 1 elem della lista
2-scorrere la lista finchè nn ho trovato il penultimo elemento
3-salvare in un puntatore l'ultimo elemento
4-far puntare a NULL il penultimo elemento
5-mettere l'ultimo elemento nel primo
ho pensato bene?![]()
![]()
http://www.oilproject.org/ -->La Scuola On-LIne degli smanettoni!
mi fai vedere la traccia?
ma mettere l'ultimo elemento nel primo intendi cambiare il puntatore di testa della lista (esatto!) o mettere il valore nel primo (sbagliato xkè si modifica anke il contenuto del puntatore d'appoggio per la testa).
se fai vedere il testo dell'esercizio forse posso aiutarti meglio...
ecco, adesso te lo scrivo:
Definire una procedura LastFirst che, data una semplice lista di interi, porta in prima posizione l'ultimo elemento.
Ti ho descritto il testo dell'esercizio.
Ma.....allora devo solo cambiare l'informazione oppure che altro?
http://www.oilproject.org/ -->La Scuola On-LIne degli smanettoni!
Io credo che l'esercizio voglia questo:
Ciao.codice:Lista attuale: 1 --> 2 --> 3 --> 4 Lista elaborata: 4 --> 1 --> 2 --> 3![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
anche io credo che voglia proprio quello....ma come faccio?
devo usare 2 puntatori?
http://www.oilproject.org/ -->La Scuola On-LIne degli smanettoni!
Dipende dal tipo di lista che hai.
Se hai una semplice Linked-List, è sufficiente che tu imposti a null il puntatore next del penultimo elemento, che imposti il puntatore next dell'ultimo in modo che vada a puntare al primo elemento e che imposti il puntatore al primo elemento in modo che punti all'ultimo.
Se hai una Double-Linked-List le cose si complicano un pochino, ma non di molto.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
io ho una normale lista di interi.....!
adesso vi faccio vedere il codice:
void lastfirst(Listaint p){
int *punt;
int *punt1;
punt=(p->inf); //puntatore al primo elemento della lista
punt1=NULL; //puntatore all'ultimo elemento
while (p->next->next!=NULL){
p=p->next;
punt1=&(p->next->inf); // punt1 = ultimo elemento
p->next=NULL; //il penultimo elemento punta a NULL
}
}
e poi mi manca un pezzo......
http://www.oilproject.org/ -->La Scuola On-LIne degli smanettoni!