You are on page 1of 8

ACADEMIA DE STUDII ECONOMICE DIN MOLDOVA

Facultatea de Cibernetic, Statistic i Informatic Economic.

Lucrarea de laborator 2
Tema:

Algoritmi de cutare

A realizat Cociug Andrei Gr.CIB-132


Coordonator stiintific: doctor conferentiar,
Tutunaru Serghei

Chisinau 2014

Laborator N3
1. Formarea i lucrul cu liste dinamice n limbajele C++, Pascal
-

Formarea unei liste FIFO; efectuarea operaiilor de adugare, inserare, eliminare a


elementelor; parcurgerea listei.
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
class Lista
{
public:
int *p;
int y, length;
public:
Lista(int =0);
~Lista();
void add(int);
void insert(int elem,int x);
int del();
void afis();
};
Lista::Lista(int size)
{
y=-1;
length=size;
if(size!=0)
p=new int[length];
else p=0;
}
Lista::~Lista()
{
if(p!=0)
delete [] p;
}
void Lista::add(int elem)
{
if(p==0)
{cout<<"Lista nu are nici un element" <<endl;
p=new int[length];
}
if(y<(length-1))
{y++;
p[y]=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(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;
}
}
}

Formarea unei liste FILO; efectuarea operaiilor de adugare, inserare, eliminare a


elementelor; parcurgerea listei.
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
class Lista
{
public:
int *p;
int a, length;
public:
Lista(int =0);
~Lista();
void add(int);
void insert(int elem,int x);
int del();
void afis();
};
Lista::Lista(int size)
{
a=-1;
length=size;
if(size!=0)
p=new int[length];
else
p=0;
}
Lista::~Lista()
{
if(p!=0)
delete [] p;
}
void Lista::add(int elem)

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;
}
}
}

You might also like