Thursday, September 21, 2006
Liste
struct Nod
{
int info;
Nod *nxt;
};
Nod *v, *sf;
void Adaugare(Nod*& v, int val)
{
Nod *c;
if(!v)
{ v = new Nod; v -> info = val; v -> nxt = 0;
sf = v;
}
else
{
c = new Nod; sf -> nxt = c; c -> info = val; c -> nxt = 0;
sf = c;
}
}
void listeaza(Nod* v)
{
Nod* c=v;
while(c)
{
cout << c -> info << " ";
c = c -> info << " ";
}
cout << endl;
}
Un mod foarte simplu de a construi o un lant de noduri. Nu este un algoritm elaborat de mine, ci dintr-o carte. Pana aici am priceput ca functia Adaugare foloseste la crearea lantului de noduri, listeaza ... . Insa urmeaza doua functii de care stiu la ce folosesc insa nu prea pricep ce se intampla cu valorile din ele.
void inserare_dupa(Nod* v, int val, int val1)
{
Nod *c, *d;
c=v;
while(c->info!=val) c = c ->nxt;
d = new Nod; d -> info = val1; d -> nxt = c -> nxt; c -> nxt = d;
if(d -> nxt) sf = d;
}
// ce valoare are in momentul asta v?, de ce while(c->info!=val) se intampla chestia asta? cat timp informatia din nod prin c este diferita de val ca parametru. Ce valoare are val?
void inserare_inainte(Nod*& v, int val, int val1)
{
Nod *c, *d;
if(v -> info == val)
{
d = new Nod;
d -> val1; d -> nxt;
v = d;
}
else
{
while(c -> nxt -> info != val) c = c -> nxt;
d = new Nod; d -> info = val1; d -> nxt = c -> nxt; c -> nxt = d;
}
}
//partea cu if o voi intelege atunci cand pricep cealalta functie de inserare, partea cu else nu o pricep deloc
void Sterg(Nod*& v, int val)
{
Nod *c, *man;
if(v -> info == val)
{
man = v; v = v -> nxt;
}
else
{
c=v;
while (c -> nxt -> info != val) c = c -> nxt;
man = c -> nxt; c -> nxt = man -> nxt;
if(man == sf) sf = c;
}
delete man;
}
//aici am inteles
main()
{
int i;
for(i = 1; i <= 10; i = i + 1;) Adaugare(v, i);
Listare(v);
inserare_dupa(v, 1, 15); Listare(v);
inserare_inainte(v, 1, 44); Listare(v);
Sterg(v, 52); Listare(v);
}
Cine ma poate ajuta cu niste explicatii sau informatii primeste o bere.
{
int info;
Nod *nxt;
};
Nod *v, *sf;
void Adaugare(Nod*& v, int val)
{
Nod *c;
if(!v)
{ v = new Nod; v -> info = val; v -> nxt = 0;
sf = v;
}
else
{
c = new Nod; sf -> nxt = c; c -> info = val; c -> nxt = 0;
sf = c;
}
}
void listeaza(Nod* v)
{
Nod* c=v;
while(c)
{
cout << c -> info << " ";
c = c -> info << " ";
}
cout << endl;
}
Un mod foarte simplu de a construi o un lant de noduri. Nu este un algoritm elaborat de mine, ci dintr-o carte. Pana aici am priceput ca functia Adaugare foloseste la crearea lantului de noduri, listeaza ... . Insa urmeaza doua functii de care stiu la ce folosesc insa nu prea pricep ce se intampla cu valorile din ele.
void inserare_dupa(Nod* v, int val, int val1)
{
Nod *c, *d;
c=v;
while(c->info!=val) c = c ->nxt;
d = new Nod; d -> info = val1; d -> nxt = c -> nxt; c -> nxt = d;
if(d -> nxt) sf = d;
}
// ce valoare are in momentul asta v?, de ce while(c->info!=val) se intampla chestia asta? cat timp informatia din nod prin c este diferita de val ca parametru. Ce valoare are val?
void inserare_inainte(Nod*& v, int val, int val1)
{
Nod *c, *d;
if(v -> info == val)
{
d = new Nod;
d -> val1; d -> nxt;
v = d;
}
else
{
while(c -> nxt -> info != val) c = c -> nxt;
d = new Nod; d -> info = val1; d -> nxt = c -> nxt; c -> nxt = d;
}
}
//partea cu if o voi intelege atunci cand pricep cealalta functie de inserare, partea cu else nu o pricep deloc
void Sterg(Nod*& v, int val)
{
Nod *c, *man;
if(v -> info == val)
{
man = v; v = v -> nxt;
}
else
{
c=v;
while (c -> nxt -> info != val) c = c -> nxt;
man = c -> nxt; c -> nxt = man -> nxt;
if(man == sf) sf = c;
}
delete man;
}
//aici am inteles
main()
{
int i;
for(i = 1; i <= 10; i = i + 1;) Adaugare(v, i);
Listare(v);
inserare_dupa(v, 1, 15); Listare(v);
inserare_inainte(v, 1, 44); Listare(v);
Sterg(v, 52); Listare(v);
}
Cine ma poate ajuta cu niste explicatii sau informatii primeste o bere.

