Documente Academic
Documente Profesional
Documente Cultură
#include <iostream>
typedef int adresa; //rebotezare tip int cu numele adresa pentru deosebire intre informatia propriu-
zisa si adresa unui nod
};
nod L[1000]; //declarare vector cu elemente de tip nod cu maxim 1000 elemente
int Exista_spatiu() //testeaza daca exista spatiu disponibil pentru alocarea unui nod
return nr_elem<1000;
void Aloca(adresa &x)//alocare spatiu pentru un nod, pe prima componenta libera gasita
adresa i=1;
while(ocupat[i]) i++;
x=i;
ocupat[i]=1;
nr_elem++;
ocupat[x]=0;
nr_elem--;
int c;
if(!v)//daca v=0, lista e vida si se creeaza primul nod, ce primeste info val si adresa v
Aloca(v);
L[v].info=val;
L[v].urm=0;
else
if(Exista_spatiu)
Aloca(c);
L[sf].urm=c;
L[c].info=val;
L[c].urm=0;
sf=c;
void Inserare_dupa(adresa v,int val, int val1) //insereaza nodul cu info val1 dupa nodul cu info val
adresa c,d;
if(Exista_spatiu())
c=v;
while(L[c].info!=val) c=L[c].urm; //se cauta nodul cu info val
L[d].info=val1;
L[d].urm=L[c].urm;
L[c].urm=d;
if(L[d].urm==0) sf=d;
void Inserare_inainte(adresa &v,int val, int val1)//insereaza nodul cu info val1 inainte de nodul cu
info val
adresa c,d;
if(Exista_spatiu())
if(L[v].info==val)
Aloca(d);
L[d].info=val1;
L[d].urm=v;
v=d;
else
c=v;
while(L[L[c].urm].info!=val) c=L[c].urm;
Aloca(d);
L[d].info=val1;
L[d].urm=L[c].urm;
L[c].urm=d;
}
else cout<<"nu e spatiu "<<endl;
adresa c,man;
if(L[v].info==val)
man=v;
v=L[v].urm;
else
c=v;
while(L[L[c].urm].info!=val) c=L[c].urm;
man=L[c].urm;
L[c].urm=L[man].urm;
if(man==sf) sf=c;
Elibereaza(man);
void Afisare(adresa v)
adresa c=v;
while(c)
cout<<L[c].info<<" ";
c=L[c].urm;
cout<<endl;
}
int Cautare(int x)
int p;
p=L[p].urm;
return(p);
int main()
int i;
for(i=1;i<=10;i++)
Adaugare(v,i);
Afisare(v);
Inserare_dupa(v,1,15); Afisare(v);
Inserare_dupa(v,10,25); Afisare(v);
Inserare_inainte(v,3,29);Afisare(v);
Sterg(v,5);Afisare(v);
return 0;