Professional Documents
Culture Documents
Lucrarea de laborator 2
Tema:
Algoritmi de cutare
Chisinau 2014
Laborator N3
1. Formarea i lucrul cu liste dinamice n limbajele C++, Pascal
-
}
}
void Lista::insert(int elem, int x)
{
if(p==0)
{
cout<<"Lista nu are nici un element"<<endl;
p=new int[length];
}
if(y<(length-1))
{y++;
p[y]=p[y-1];
int b=p[x-1];
p[x-1]=elem;
for(int i=y;i>x;i--)
{
p[i]=p[i-1];
if((i-1)==x)
{
p[i-1]=b;
}
}
}
else
{
cout<<"Lista e plina"<<endl;
}
}
int Lista::del()
{
if(p==0 || y==-1)
{
cout <<"lista e goala"<<endl;
return -1;
}
int rez=p[0];
for(int i=0;i<y;i++)
{
p[i]=p[i+1];
if((i+1)==y)
{
p[y]=0;
}
}
y--;
return rez;
}
void Lista::afis()
{
for(int i=0;i<=y;i++)
{
cout<<p[i]<<" ";
}
cout<<endl;
}
int main()
{
char k,n;
int size,elem,x;
cout<<"Dati numarul elementelor din lista"<<endl;
cin>>size;
Lista l1(size);
while(k!='n')
{
cout <<"Doriti sa efectuati careva schimbari? (y/n)";
cin>>k;
if(k=='y')
{
cout<<"Adaugare -a, Inserare - i, Stergere -d." <<endl;
cin>>n;
switch(n)
{
case 'a':{cout<<"adaugarea unui element nou:"; cin>>elem;
l1.add(elem);l1.afis();cout<<endl;} break;
case 'i':{cout<<"Inserarea unui element nou:"; cin>>elem;
cout<<endl<<"Pozitia elementului pe care dorim sa il modificam:";
cin>>x; l1.insert(elem,x); l1.afis(); cout <<endl;} break;
default: cout<<"Nu exista aceeasta optiune, alegeti o
optiune valida"<<endl; break;
}
}
else if(k=='n')
{
cout <<"Lista ramine neschimbata"<<endl;
l1.afis();
}
else
{
cout<<"caracter invalid, introduceti un caracter valid"<<endl;
}
}
}
if(p==0)
{cout<<"Lista nu are nici un element" <<endl;
p=new int[length];
}
if(a<(length-1))
{a++;
p[a]=elem;
}
else
{cout<<"Lista este plina"<<endl;
}
}
void Lista::insert(int elem, int x)
{
if(p==0)
{
cout<<"Lista nu are nici un element"<<endl;
p=new int[length];
}
if(a<(length-1))
{
a++;
p[a]=p[a-1];
int b=p[x-1];
p[x-1]=elem;
for(int i=a;i>x;i--)
{
p[i]=p[i-1];
if((i-1)==x)
{
p[i-1]=b;
}
}
}
else
{
cout<<"Lista e plina"<<endl;
}
}
int Lista::del()
{
if(p==0 || a==-1)
{
cout <<"lista e goala"<<endl;
return -1;
}
int rez=p[a];
a--;
return rez;
}
void Lista::afis()
{
for(int i=0;i<=a;i++)
{
cout<<p[i]<<" ";
}
cout<<endl;
}
int main() {
char k,n;
int size,elem,x;
cout<<"Dati Numarul elementelor in lista"<<endl;
cin>>size;
Lista l1(size);
while(k!='n')
{
cout <<"Doriti sa modificati datele din lista? (y/n)";
cin>>k;
if(k=='y')
{
cout<<"Adaugare -a, Inserare - i, Stergere -s." <<endl;
cin>>n;
switch(n)
{
case 'a':{cout<<"adaugarea unui element nou:"; cin>>elem;
l1.add(elem);l1.afis();cout<<endl;} break;
case 'i':{cout<<"Inserarea unui element nou:"; cin>>elem;
cout<<endl<<"Pozitia elementului";
cin>>x; l1.insert(elem,x); l1.afis(); cout <<endl;} break;
default: cout<<"Nu exista asemenea varianta"<<endl; break;
}
}
else if(k=='n')
{
cout <<"Lista ramine nemodificata"<<endl;
l1.afis();
}
else
{
cout<<"caracter invalid, incercati un caracter valid"<<endl;
}
}
}