You are on page 1of 8

/* Operatii asupra Stivelor prin Tipul Tablou */

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <ctype.h>

#define lg_max 5

typedef int tip_elem;

typedef struct

int varf;

tip_elem elemente[lg_max];

}STIVA;

int er, j, i;

STIVA S;

tip_elem X;

void initializare(STIVA *S)

S->varf=lg_max;

} /* Initializare */
int stiva_vida(STIVA S)

if(S.varf>=lg_max)

return 1;

else return 0;

} /* stiva_vida */

tip_elem varf_st(STIVA S)

er=0;

if(stiva_vida(S) == 1)

er=1;

printf("ERROR. Stiva este vida!! \n");

return 0;

else return S.elemente[S.varf];

} /* varf_st */

void sterge(tip_elem *X, STIVA *S)

er=0;

if(stiva_vida(*S)==1)

er=1;
printf("ERROR. Stiva este vida!! \n");

else

*X=S->elemente[S->varf];

S->elemente[S->varf]=0;

S->varf=S->varf+1;

} /* Sterge */

void adauga(tip_elem X, STIVA *S)

er=0;

if(S->varf==0)

er=1;

printf("Stiva e plina!! \n");

else

S->varf=S->varf-1;

S->elemente[S->varf]=X;

} /* Adauga */
void creare(void)

char c;

initializare(&S);

printf("Adaugati ?! [D/N] : ");

fflush(stdin); scanf("%c", &c); c=toupper(c);

while(c=='D')

printf("Dati elementul : "); scanf("%d", &X);

adauga(X, &S);

printf("Mai agaugati ?! [D/N] : ");

fflush(stdin); scanf("%c", &c); c=toupper(c);

} /* Creare */

void listare(STIVA S)

int i;

if(stiva_vida(S))

er=1;

printf("ERROR. Stiva este vida!! \n");

else

{
printf("\n Stiva : ");

for(i=S.varf; i<=lg_max-1; i++)

printf(" %d ", S.elemente[i]);

} /* Listare */

void listare_Tab(void)

printf("Tabloul: [ ");

for(i=0; i<=lg_max-2; i++)

printf("%d, ", S.elemente[i]);

printf("%d] \n", S.elemente[lg_max-1]);

} /* Listare_Tab */

int cautare(tip_elem X, STIVA S)

int i;

for(i=S.varf; i<=lg_max-1; i++)

if(S.elemente[i]==X)

return i;

return -1;

} /* Cautare */

void main(void)

{
tip_elem X;

char op;

initializare(&S);

do

clrscr();

printf("\t\t\t Operatii asupra Stivelor prin Tipul Tablou \n\n");

printf("C-Creare. \n");

printf("I-Inserarea unui element in vf. stivei. \n");

printf("L-Listare. \n");

printf("V-Afisarea elementului din vf. stivei. \n");

printf("G-Cautare. \n");

printf("S-Stergere. \n");

printf("E-Iesire. \n\n");

printf("Introduceti optiunea : ");

fflush(stdin); scanf("%c", &op); op=toupper(op);

switch(op)

case 'C': creare();

break;

case 'V': X=varf_st(S);

if(er==0)

printf("Elementul din vf. stivei este : %d \n", X);

break;

case 'I': printf("Introduceti elementul : ");


fflush(stdin); scanf("%d", &X);

adauga(X, &S);

break;

case 'L': listare(S);

break;

case 'G': if(stiva_vida(S))

printf("ERROR. Stiva este vida!! \n");

else

printf("Elementul pe care il cautati : ");

fflush(stdin); scanf("%d",&X);

j=cautare(X, S);

if(j!=lg_max)

printf("Elementul cautat este : ");

printf("%d \n", S.elemente[j]);

else

printf("Nu am gasit elementul %d ", X);

printf("in stiva! \n");

break;

case 'S': sterge(&X, &S);


break;

case 'E': break;

default : printf("Optiune eronata!! ");

break;

} /* SWITCH */

listare(S);

listare_Tab();

getch();

}while(op!='E');

} /* MAIN */

You might also like