Baixe o app para aproveitar ainda mais
Prévia do material em texto
/*Pilha com Vetor*/ /*pilha-vetor.h*/ #include <stdlib.h> typedef struct pilha Pilha; Pilha *pi_cria(void); void pi_push(Pilha*pi,int novo); int pi_pop(Pilha*pi); void pi_libera(Pilha *pi); int pi_eh_vazia(Pilha *p); #include "pilha-vetor.h" #define N 80/*numero MAX de elementos da Pilha*/ struct pilha { int n;/*numero de elementos que tem na pilha*/ /*vet[n]:primeira posição livre do vetor*/ /*vet[n-1] é o topo da pilha*/ int vet[N];/*vet[0] a vet[N-1] posições ocupáveis*/ }; Pilha* pi_cria() { Pilha *p; p=(Pilha*)malloc(sizeof(Pilha));/*Alocando uma pilha VAZIA*/ if(p==NULL) exit(1); p->n=0;/*O numero de elementos é ZERO*/ return p;/*retorno o endereço da nova Pilha*/ } void pi_push(Pilha *p, int v) { if(p->n==N)/*Capacidade esgotada*/ { printf("Pilha cheia\n"); exit(1); } p->vet[p->n]=v;/*Insere o elemento na PROXIMA posição livre*/ p->n++; } int pi_pop(Pilha *p) { int v; if(pi_eh_vazia(p))/*primeiro verifica se eh VAZIA, retorna 1 se for vazia, q pro VS quer dizer SIM*/ {printf("Pilha Vazia\n"); exit(1); } v=p->vet[p->n-1];/*pega o valor(info) do ultimo da lista, na posição n-1*/ p->n--;/*diminuo 1 da lista*/ return v;/*retorno o valor(info) do ultimo da lista*/ } int pi_eh_vazia(Pilha *p) { if(p->n==0) return 1; return 0; }
Compartilhar