int empilha(PilhaGenerica *p, void *info){ if(pilha_cheia(*p)) return ERRO_PILHA_CHEIA; p -> topo++; p -> dados[p->topo] = malloc(p -> tamInfo); memcpy(p -> dados[p -> topo ], info, p -> tamInfo); return 1; }
//Esta funcao se encarrega de empilhar um item novo na pilha,esse empilhamento //se da sempre no topo da pilha. void push(char X, pilha *P) { if(pilha_cheia(P)==1) { clrscr(); printf("\nA pilha esta cheia"); getch(); return; } else { ++(P->topo); /*eh a mesma coisa que: P->topo=P->topo+1*/ P->entradas[P->topo]=X; } return; }
//funcao principal //aqui serão feitas as intervenções com io usuário int main () { pilha p;//cria uma pilha chamada "p" vazia p = criar_pilha();//define a estrutura de "p" e aplica p.topo=N-1 (contido em Criar_Pilha) char nomes[50]; //string para receber o que o usuário digita while (pilha_cheia(p)==false)//enquanto a pilha não estiver cheia faça(...) { printf ("Digite um nome: "); scanf("%s", nomes); push(p,nomes); /*leva para empilhar "p" e "nomes", que na função "Push" recebe o nome de "val"*/ } //desempilhando while (pilha_vazia(p)==false) { //consulta a pilha top(p,nomes); printf("Vou desempilhar: %s\n", nomes);//exibe o nome desempilhado pop(p);//desempilha 1 //o "p.topo" mostra o valor atual do índice } system("Pause"); }