View Full Version : Liste in C++.,
RedFerrari96
22-01-2014, 20:56
Salve. Io sto facendo le liste a scuola, solo che essendo stato assente qualche giorno per malattia, non sono riuscito a seguire. Volevo chiedere se qualcuno me le può spiegare bene? Leggendo qua e là qualche cosa ho compreso, però ho molti dubbi. Ad esempio non capisco una cosa di questo codice che serve per fare l'inserimento in coda:
void INSERFONDO(nodo* &L,<tipo> X)
{ nodo* p,*q;
p=new nodo;
p->INFO=X;
P->NEXT=NULL;
if(L==NULL)
L=p;
else
{q=L;
while(q->NEXT!=NULL)
q=q->NEXT;
q->NEXT=P;
}
}
Cosa fa l'istruzione ingrandita?
Inolte se io dichiaro una Struct, e poi dichiaro: nomestrcut* nome_variabie. E poi nel main faccio: nome_variabile=NULL, cosa fa il comando? Secondo me inizializza una lista, ovvero un contenitore che non contiene nulla, e non punta a nulla , giusto? Ringrazio, chi riesce a spiegarmi bene questo argomento nei minimi dettagli.
vendettaaaaa
22-01-2014, 21:38
Salve. Io sto facendo le liste a scuola, solo che essendo stato assente qualche giorno per malattia, non sono riuscito a seguire. Volevo chiedere se qualcuno me le può spiegare bene? Leggendo qua e là qualche cosa ho compreso, però ho molti dubbi. Ad esempio non capisco una cosa di questo codice che serve per fare l'inserimento in coda:
void INSERFONDO(nodo* &L,<tipo> X)
{ nodo* p,*q;
p=new nodo;
p->INFO=X;
P->NEXT=NULL;
if(L==NULL)
L=p;
else
{q=L;
while(q->NEXT!=NULL)
q=q->NEXT;
q->NEXT=P;
}
}
Cosa fa l'istruzione ingrandita?
Inolte se io dichiaro una Struct, e poi dichiaro: nomestrcut* nome_variabie. E poi nel main faccio: nome_variabile=NULL, cosa fa il comando? Secondo me inizializza una lista, ovvero un contenitore che non contiene nulla, e non punta a nulla , giusto? Ringrazio, chi riesce a spiegarmi bene questo argomento nei minimi dettagli.
Facile: se il nodo* che hai passato alla funzione è NULL, cioè non punta a niente, tu assegni il nuovo nodo appena creato, che contiene il valore x, al nodo L che è null. L è null o perchè gli hai passato una lista vuota (e assegnandogli, cioè appendendogli, p, questa lista vuota ha ora 1 elemento, cioè 1 nodo) o perchè è la coda di una lista non vuota. In questo caso aggiungi un altro elemento in coda a quella lista.
Guarda il nodo p appena creato: è una lista di 1 elemento (1 nodo), che contiene un valore ed un riferimento al prossimo nodo (null, quindi la lista si limita ad 1 nodo).
Segue che la tua risposta alla tua seconda domanda è corretta.
Certo è che per capire a fondo le liste devi capire bene come funzionano i puntatori. Inoltre, sapresti dirmi cosa succederebbe se la tua funzione prendesse come primo parametro
nodo* L
anzichè
nodo*& L
?
RedFerrari96
23-01-2014, 21:54
Se passo il parametro nodo* &L posso modificare la lista, mentre se passo solo nodo* L non posso modificarla. Credo che sia questa la risposta alla tua domanda, se l'ho capita bene.
vendettaaaaa
23-01-2014, 22:46
Se passo il parametro nodo* &L posso modificare la lista, mentre se passo solo nodo* L non posso modificarla. Credo che sia questa la risposta alla tua domanda, se l'ho capita bene.
Risposta esatta :read:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.