// Este arquivo: STACK.c
// Data: 2019-10-04
// Digitador: Paulo Feofiloff
//
// Esta é uma implementação de uma pilha cujos elementos são vértices de um
// grafo (veja GRAPHlists.h e GRAPHlists.c).
//
// O código é uma adaptação do programa 4.4, p.146, do livro "Algorithms",
// 3rd.ed., part 1, de Sedgewick.
////////////////////////////////////////////////////////////////////////////////


#include "STACK.h"
// inclui MYTOOLS.h (que contém a definição de mallocc())

// A pilha é implementada no vetor stack[0..N-1].
static vertex *stack;
static int top;

void 
STACKinit( int N) { 
   stack = mallocc( N * sizeof (vertex)); 
   top = 0; 
}

bool 
STACKempty( ) { 
   return top == 0; 
}

void 
STACKpush( vertex v) { 
   stack[top++] = v; 
}

int 
STACKpop( ) { 
   return stack[--top]; 
}

int 
STACKpeek( ) { 
   return stack[top-1]; 
}

void 
STACKfree( ) { 
   free( stack);
}

////////////////////////////////////////////////////////////////////////////////
