Buscar

Pilha com Vetor

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;
}

Outros materiais