Sei sulla pagina 1di 3

#include<stdio.h> #include<stdlib.h> #define MAX 5 /* Pilha....uma implementao bsica de uma estrutura pilha.

autor: Ezequiel Alcio Ribeiro */ struct aluno { int ra; char *nome; }; struct registro { struct aluno banco[MAX]; int topo; }; //struct registro *bc o mesmo que bc[] int push(struct aluno x,struct registro *bc) { int cheio = 0; if (bc->topo == MAX-1){ puts("Pilha cheia"); cheio = 1; } else { //o topo sobe uma posio bc->topo++; //o vetor recebe a prxima posio e insere X um objeto do tipo aludo. bc->banco[bc->topo] = x; puts("Sucesso na insercao"); } return (cheio); } int pop(struct aluno empy,struct registro *bc){ int vazia = 0; if(bc->topo < 0){ puts("Vazia!"); vazia = 1; }else{

/*antes do topo descer na pilha, a posio atual recebe "empy" que nada mais que um objeto do tipo aluno que contm dados em branco. Isso assegura que o item eliminado no est mais na posio que ocupava. */ bc->banco[bc->topo] = empy; //topo-- a pilha descer uma posio bc->topo--; puts("Item eliminado"); } return (vazia); } main() { struct aluno x1,x2,x3,x4,x5,empy; struct registro reg; reg.topo = -1; register int j = 0; empy.nome = ""; empy.ra = 0; for(; j < MAX;j++){ reg.banco[j] = empy; } //criando objetos do tipo aluno x1.nome = "Ezequiel"; x1.ra = 1870333871; x2.nome = "Maria"; x2.ra = 107125485; x3.nome = "Paulo"; x3.ra = 102547863; x4.nome = "Pedro"; x4.ra = 251487621; x5.nome = "Roberto"; x5.ra = 58647182;

puts("-----------------------------"); //inserindo objetos do tipo aluno na pilha push(x1,&reg); push(x2,&reg); push(x3,&reg); push(x4,&reg); push(x5,&reg); //tentativa de inserir um objeto em uma pilha cheia push(x1,&reg);

for(j = 0; j < reg.topo+1;j++){ printf("%d\n",j+1); puts(reg.banco[j].nome); printf("RA: %d\n",reg.banco[j].ra); }

puts("-----------------------------"); //removendo objetos do tipo aluno da pilha pop(empy,&reg); pop(empy,&reg); pop(empy,&reg); pop(empy,&reg); pop(empy,&reg);

for(j = 0; j < reg.topo+1;j++){ printf("%d\n",j); puts(reg.banco[j].nome); printf("RA: %d\n",reg.banco[j].ra); } //tentativa de remover um objeto em uma pilha vazia pop(empy,&reg); getchar(); }

Potrebbero piacerti anche