/********************************************/
/* Modulo stack.h        Fecha: 9/5/2002    */
/* Autores: Carlos del Cacho Vicente y      */
/*          Jose David Alvarez Valentin     */
/* Grupo J9                                 */
/*                                          */
/* Este modulo contiene las estructuras     */
/* que implementan la pila                  */
/********************************************/

#ifndef STACK_H
#define STACK_H


typedef struct pentry_t
{

  void *data;             //Identificador de la entrada
  struct pentry_t *next;    //Siguiente identificador de la entrada
  struct pentry_t *last;    //Siguiente identificador de la entrada

} my_stack_entry_t;

//--------------------------------------------
/*Estructura con la que se implementa la tabla hash*/
typedef struct 
{
    my_stack_entry_t *entries;   //Puntero a una lista de entradas
    my_stack_entry_t *top;
    int data_size;

} my_stack_t;


void InitStack(my_stack_t *pila, int entry_size);
my_stack_entry_t *InsertStack(my_stack_t *ppila, const void *data);
void *ExtractStack(my_stack_t *ppila, void *data);
int IsEmpty(my_stack_t *pila);
void ClearStack(my_stack_t *pstack);
void *PeekStack(my_stack_t *pstack, int i);
#endif



