Вы находитесь на странице: 1из 5

Coada

Aceasta structura de date este un caz particular de lista care functioneaza pe


principiul FIFO (first in first out, primul intrat este primul iesit (servit)). Principalele
prelucrari care se refera la aceasta structura de date vor fi:
- creare coada
- parcurgere coada
- adaugare la sfarsit
- stergere element (intotdeauna va fi sters primul element)
- prelucrare element (primul element)
Specific acestei structuri de date este faptul ca adaugarea se va face intotdeauna dupa
ultimul element in timp ce prelucrarea (stergerea) se va face la celalat capat. Pentru a prelucra
o coada vor fi necesari doi pointeri: unul il vom numi varful cozii (primul nod creat) in timp ce
la capatul opus ne vom referi la ultimul element.
Functia adaug( ) , creaza coada cand aceasta este vida sau adauga un nou element la sfarsit
in caz contrar.
Functia sterge( ), elimina elementul din varful cozii.
In continuare se prezinta o solutie pentru implementarea functiilor anterioare. oada
prelucreaza numere intregi.
!include"iostream.#$
!include"conio.#$
struct nod%int info&
nod 'ne(t&)&
void adaug(nod' *v,nod' *sf,int ()
%nod 'c&
if(+v)
%v,ne- nod&
v-$info,(&
v-$ne(t,.&
sf,v&)
else
%c,ne- nod&
sf-$ne(t,c&
c-$info,(&
sf,c&
sf-$ne(t,.&)
)
void afisare(nod 'v)
%nod 'c&
c,v&
-#ile(c)
%cout""c-$info""/ /&
c,c-$ne(t&)
)
void sterge(nod' *v)
%nod' c&
if(+v)
cout""/coada este vida si nu mai avem ce elimina+/&
else
%c,v&
v,v-$ne(t&
delete c&)
)
void main()
%int n,a&
nod 'varf,.,'ultim,.&00varful si ultimul element al cozii
cout""/numarul initial de noduri /&
cin$$n&
for(int i,1&i",n&i22)
%cout""/valoarea de adaugat in coada /&
cin$$a&
adaug(varf,ultim,a)&
)
cout""endl&
afisare(varf)&
int nre,nra&
cout""endl""/cate adaugari 3/&
cin$$nra&
for(i,1&i",nra&i22)
%cout""/valoarea de adaugat /&
cin$$a&
adaug(varf,ultim,a)&)
cout""endl""/dupa adaugarea nodurilor/""endl&
n,n2nra&
cout""/coada are /""n""/ elemente/""endl&
afisare(varf)&
cout""endl""/cate noduri doriti sa eliminati 3/&
cin$$nre&
for(i,1&i",nre&i22)
sterge(varf)&
cout""endl""/dupa eliminare/""endl&
n,n-nre&
cout""/coada are /""n""/ elemente/""endl&
afisare(varf)&
00prelucrez varful cozii: de e(emplu se poate tripla continutul:
varf-$info,4'varf-$info&
cout""endl""/dupa triplarea valorii varfului /""endl&
afisare(varf)&
getc#()&
)
Stiva
Aceasta structura de date este un caz particular de lista care functioneaza pe
principiul 5IF6 (last in first out, ultimul intrat este primul servit). Principalele prelucrari
care se refera la aceasta structura de date vor fi:
- - creare stiva
- -listare stiva (parcurgere in ordine inversa creerii)
- -adaugare la sfarsit ( peste varful stivei, operatie numita push ( ) )
- -stergere element din varful stivei (operatie numita pop( ) )
- - prelucrarea varfului stivei
Specific acestei structuri de date este faptul ca prelucrarile se fac intotdeauna la elementul
de la acelasi capat, element pe care il vom numi varf.
Functia push( ) , creaza stiva cand aceasta este vida sau adauga un nou element in caz
contrar.
Functia pop( ), elimina elementul din varful stivei.
Fie o stiva de numere intregi pentru care elementele sunt adaugate in ordinea: 1, 7, 4, 8
Afisarea se va face in ordine inversa generarii si prin urmare se va afisa: 8, 4, 7, 1.
Pentru stergere, prin operatia pop( ) se va sterge elementul din varful stivei (8), dupa care
noul varf va deveni precedentul sau (4):
Pentru a prelucra aceasta structura de date va fi suficient un singur pointer, pentru varf.
!include"iostream.#$
!include"conio.#$
struct nod{int info;
nod *back;};
nod *varf;
void push(nod* &v,int x)
%nod 'c&
if(+v)
%v,ne- nod&
v-$info,(&
v-$9ac:,.&)
else
%c,ne- nod&
c-$9ac:,v&
c-$info,(&
v,c&)
)
void afisar(nod *v)
%nod 'c&
c,v&
-#ile(c)
%cout""c-$info""/ /&
c,c-$9ac:&)
)
void pop(nod* &v)
%nod' c&
if(+v)
cout""/stiva este vida si nu mai avem ce elimina+/&
else
%c,v&
v,v-$9ac:&
delete c&)
)
void !ain()
%int n,a&
cout""/numarul initial de noduri /&
cin$$n&
for(int i,1&i",n&i22)
%cout""/valoarea de adaugat in stiva /&
cin$$a&
pus#(varf,a)&
)
cout""endl&
afisare(varf)&
int nre,nra&
cout""endl""/cate adaugari 3/&
cin$$nra&
for(i,1&i",nra&i22)
%cout""/valoarea de adaugat /&
cin$$a&
pus#(varf,a)&)
cout""endl""/dupa adaugare/""endl&
n,n2nra&
cout""/stiva are /""n""/ elemente/""endl&
afisare(varf)&
cout""endl""/cate eliminari 3/&
cin$$nre&
for(i,1&i",nre&i22)
pop(varf)&
cout""endl""/dupa eliminare/""endl&
n,n-nre&
cout""/stiva are /""n""/ elemente/""endl&
afisare(varf)&
00prelucrez varful stivei: de e(emplu se poate tripla continutul:
varf-$info,4'varf-$info&
cout""endl""/dupa triplarea valorii varfului /""endl&
afisare(varf)&
getc#()&
)

Вам также может понравиться