#ifndef __LISTAP_H
#define __LISTAP_H
/*-------------------------------------------------------------------*/
/* "DISENO Y MANEJO DE ESTRUCTURAS DE DATOS EN C" - V. 1.0           */
/* J. Villalobos, A. Quintero - Universidad de los Andes             */
/*-------------------------------------------------------------------*/
/* TAD Lista de parejas [sucesor, costo ] adaptada para grafos       */
/*-------------------------------------------------------------------*/

/*-------------------------------------------------------------------*/
/*                      ESTRUCTURAS DE DATOS                         */
/*-------------------------------------------------------------------*/

#include <stdio.h>

typedef struct ListaNodoP
{   TipoLP info;
    struct ListaNodoP *ant, *sig;
}   *pListaNodoP;

typedef struct
{   pListaNodoP primero, ultimo, ventana;
    int longitud;
}   TListaP, *ListaP;

typedef pListaNodoP VentanaP;

/*-------------------------------------------------------------------*/
/*                             OPERACIONES                           */
/*-------------------------------------------------------------------*/

/* Constructora */
ListaP inicListaP(void);

/* Modificadoras */
void anxListaP(ListaP lst, TipoLP elem);
void insListaP(ListaP lst, TipoLP elem);
void elimListaP(ListaP lst);
void sigListaP(ListaP lst);
void primListaP(ListaP lst);
void ultListaP(ListaP lst);
void posListaP(ListaP lst, int pos);
void situarListaP(ListaP lst, VentanaP vent);

/* Analizadoras */
TipoLP infoListaP(ListaP lst);
int longListaP(ListaP lst);
int finListaP(ListaP lst);
VentanaP ventanaListaP(ListaP lst);

/* Destructora */
void destruirListaP(ListaP lst);

/* Depuracion */
void impListaP(ListaP lst);

/*-----------------------------------------------------------------------*/
#endif
