#include #define MAX 100 struct stiva { int *s; // elemente stiva int v; // varf stiva }; stiva creaza_stiva (void) { stiva rezultat; rezultat.s=new int [MAX]; rezultat.v=-1; return rezultat; } int este_plina (struct stiva st) { return (st.v==MAX-1)?1:0; } int este_goala (struct stiva st) { return (st.v==-1)?1:0; } int push (struct stiva *st,int elem) // inserare // parametrul st este dat cu * pentru ca se modifica valoarea lui // (valoarea trebuie sa fie vizibila in exterior) { if (!este_plina(*st)) { st->v++; st->s[st->v]=elem; return 0; } else return -1; } int pop (struct stiva *st) // eliminare // parametrul st este dat cu * pentru ca se modifica valoarea lui // (valoarea trebuie sa fie vizibila in exterior) { if (!este_goala(*st)) { int rezultat; rezultat=st->s[st->v]; st->v--; return rezultat; } else return -1; } int top (struct stiva st) // varful stivei // parametrul st este dat cu * pentru ca se modifica valoarea lui // (valoarea trebuie sa fie vizibila in exterior) { if (!este_goala(st)) return st.s[st.v]; return -1; } void print (struct stiva st) { cout<<"stiva : "; if (!este_goala(st)) { int k; for (k=st.v;k>=0;k--) cout<"; } cout<s; rezultat->v=-1; }