Documente Academic
Documente Profesional
Documente Cultură
if (vf == DimMax-1)
S[++vf] = x;
if (vf<0)
//stiva este vida
cout<<"Eroare - stiva este vida\n";
else
//extragem elementul de la varf
x = S[vf--];
Observaii
1. Dezavantajul implementrii unei stive ca vector alocat
static const n faptul c indiferent de numrul de
elemente existente n stiv, dimensiunea zonei de
memorie alocat stivei este aceeai (DimMax).
2. Pentru a executa operaii cu stiva alocat static
este suficient s cunoatem vrful stivei. Ca s reinem
mai uor modul de funcionare a stivei, ne imaginm c
la inserare vrful stivei urc, iar la extragere vrful
coboar.
#include<iostream>
using namespace std;
struct nod{
int info;
nod *back;
};
nod *varf;
//Creare stiva/adaugare in stiva
void push(nod* &v,int x){
nod *c;
if(!v){
v=new nod;
v->info=x;
v->back=0;
}
else{
c=new nod;
c->back=v;
c->info=x;
v=c;
}
}
//Eliminare din stiva
void pop(nod* &v){
nod* c;
if(!v) cout<<"stiva este vida si nu mai ai ce elimina!!!";
else{
c=v;
v=v->back;
delete c;
}
}
//afisarea stivei
void afisare(nod *v){
nod *c;
c=v;
while(c){
cout<<c->info<<" ";
c=c->back;
}
}
main(){
int n,nre,a,i;
cout<<"numarul initial de noduri ";
cin>>n;
for(int i=1;i<=n;i++){
cout<<"valoarea de adaugat in stiva ";
cin>>a;
push(varf,a);
}
cout<<endl;
afisare(varf);
cout<<endl<<"cate eliminari ?";
cin>>nre;
for(i=1;i<=nre;i++) pop(varf);
cout<<endl<<"dupa eliminare"<<endl;
n=n-nre;
cout<<"stiva are "<<n<<" elemente"<<endl;
afisare(varf);
//prelucrez varful stivei: de exemplu se poate dubla continutul:
varf->info=2*varf->info;
cout<<endl<<"dupa dublarea valorii varfului "<<endl;
afisare(varf);
}
Pentru acas
S se memoreze n numere ntregi ntr-o structur de tip
stiva. S se tearga elementele din vrful stivei pn se
ntlnete un numr pentru care suma cifrelor este mai
mare dect 10.