PDA

View Full Version : [C]DUBBIO LISTE


emiliano30
01-06-2005, 11:08
void inserisci_dopo (lista &L, nodo *p, int n)
{
nodo *q = new nodo;
q->n = n;
q->prossimo = p->prossimo;
p->prossimo = q;
}



ho un piccolo dubbio,
nella prima riga creo un nuovo nodo puntato da q,
nella terza q punta al prossimo nodo come p,
nella riga 4 inserisco i nodo....
se non si fosse capito non mi è chiara la seconda riga :p (nel nodo q che punta ad n inserisco n?)..come al solito le dritte sono ben accette

ghiotto86
01-06-2005, 12:07
il fatto è semplice.
se vedi la struttura del nodo dovrebbe essere fatta così


struct nodo{
int n;
nodo *prossimo;
}


quando tu fai q->n=n dici che il campo n puntato da q deve essere uguale ad un intero n.
per non confonderti perchè alla funzione non passi la variabile con un'altro nome??
tipo elemento.
ciao

D4rkAng3l
01-06-2005, 12:46
void inserisci_dopo (lista &L, nodo *p, int n)
{
nodo *q = new nodo;
q->n = n;
q->prossimo = p->prossimo;
p->prossimo = q;
}



ho un piccolo dubbio,
nella prima riga creo un nuovo nodo puntato da q,
nella terza q punta al prossimo nodo come p,
nella riga 4 inserisco i nodo....
se non si fosse capito non mi è chiara la seconda riga :p (nel nodo q che punta ad n inserisco n?)..come al solito le dritte sono ben accette


Scusa ma per inserire un nuovo nodo lo dovrai presumibilmente allocare dinamicamente con malloc...che intendi con nodo *q = new nodo;
Così stai dichiarando un puntatore q di tipo nodo...e gli devi attribuire l'indirizzo di un nuovo nodo allocato dinamicamente.

poi quando fai q->n = n; dici semplicemente che il campo n puntato dal nodo il cui indirizzo è contenuto in q viene settato al valore intero contenuto nella variabile n

q->prossimo = p->prossimo; questa setta il campo prossimo del nodo puntato da q con il valore contenuto nel campo prossimo del nodo puntato da p

p->prossimo = q; e questa setta il campo prossimo del nodo puntato da p con l'indirizzo in q se non erro...

Però a che ti serve questo programma?non ne vedo un'utilità pratica ma forse mi sbaglio...

Spero di esserti stato d'aiuto...

Ciao
Andrea

Ziosilvio
01-06-2005, 14:23
per inserire un nuovo nodo lo dovrai presumibilmente allocare dinamicamente con malloc
Questo è C++, in cui il ruolo delle funzioni malloc e free è svolto dagli operatori new e delete rispettivamente.

D4rkAng3l
01-06-2005, 14:58
wee...ciao grande ZioSilvio..come stai?
cmq lui aveva scritto C...ecco perchè c'era qualcosa che non mi quadrava...di C++ non sò nulla :D

Fenomeno85
02-06-2005, 11:18
wee...ciao grande ZioSilvio..come stai?
cmq lui aveva scritto C...ecco perchè c'era qualcosa che non mi quadrava...di C++ non sò nulla :D

cmq non cambia nulla tranne il metodo da utilizzare :)

~§~ Sempre E Solo Lei ~§~