Quick actions

cmd+k|ctrl+k

Navigation

Languages

Pilha

Snippet info

Language

C

Visibility

public

Author

rodrigogons

Created

2017-04-26T22:13:42Z

Updated

2017-04-26T22:13:42Z

/*
Pilha utilizando alocacao estatica (vetores)
Operacoes:
	push( ): insere um elemento na pilha.
	pop( ): retorna e remove o ultimo elemento inserido na pilha.

Operacoes auxiliares:
	topo(): retorna o ultimo elemento inserido na pilha sem remove-lo.
	size(): retorna o numero de elementos armazenados
 	pilha_vazia(): retorna a indicacao se existe ou nao elementos na pilha.
*/

#include <stdio.h>

#define MAX 10

typedef struct typePilha {
  int topo;
  int vet[MAX];
} typePilha;


void inicia (typePilha *p)
{
  p->topo = -1;
}

int cheia (typePilha *p)
{
  return (p->topo==MAX-1);
}

int vazia(typePilha *p)
{
  return (p->topo==-1);
}

int push (typePilha *p, int val)
{
   if (cheia(p))
	  return 0; // pilha cheia
   p->vet[++p->topo]=val;
   return 1;
}


int pop (typePilha *p, int *val)
{
   if (vazia(p))
	  return 0;  // pilha vazia
   *val=p->vet[p->topo--];
   return 1;
}

int main(){
	int i, dado;
	typePilha pilha;
	inicia(&pilha);
	
	for(i = 0; i<=3; i++ ) push(&pilha, i);
    
    printf("Topo-> ");
	 while (!vazia(&pilha)) {
    	pop(&pilha, &dado);
    	printf("%d -> ",dado);
    }
    printf("Inicio da pilha");
	
	fprintf(stdout,"\n\n");fflush(stdout);
	return 0;
}
INFO