#ifndef __LISTA_H__ #define __LISTA_H__ 1 typedef void* Objeto; struct nodo_lista { Objeto data; /* el objeto guardado en el nodo */ struct nodo_lista* sig; /* el siguiente nodo de la lista */ }; typedef struct nodo_lista * Lista; /* define la lista como un apuntador a su primer nodo */ Lista nueva_lista(void); /* crea una lista vacía */ Lista copia_lista(Lista origen); /* crea una lista como copia de otra lista */ Lista copia_sublista(Lista origen, int inicio, int final); /* crea una lista como copia parcial de otra lista*/ int lista_vacia(Lista lalista); /* indica si la lista está vacía */ int lista_contar(Lista lalista); /* devuelve el número de elementos de la lista */ Objeto lista_item(Lista *reflista, int posicion); /* devuelve el elemento en la posición posicion */ Lista lista_agregar(Lista* reflista, Objeto item, int posicion); /* agrega un elemento en la respectiva posicion */ Lista lista_agregar_inicio(Lista* reflista, Objeto item); /* agrega un elemento al principio de la lista */ Lista lista_agregar_final(Lista* reflista, Objeto item); /* agrega un elemento al final de la lista */ Lista lista_insertar(Lista* reflista, Lista origen, int posicion); /* inserta el contenido de otra lista en la posicion dada */ Lista lista_insertar_inicio(Lista* reflista, Lista origen); /* inserta el contenido de otra lista al principio */ Lista lista_insertar_final(Lista* reflista, Lista origen); /* inserta el contenido de otra lista al final */ Lista lista_borrar(Lista* reflista, int posicion); /* borra el posicion-ésimo elemento de la lista */ Lista lista_borrar_primero(Lista* reflista); /* borra el primer elemento de la lista */ Lista lista_borrar_ultimo(Lista* reflista); /* borra el último elemento de la lista */ Lista lista_borrar_rango(Lista* reflista, int inicio, int final); /* borra un rango de la lista */ Objeto lista_extraer(Lista* reflista, int posicion); /* extrae un elemento de la lista (devuelve el elemento y lo borra) */ Objeto lista_extraer_primero(Lista* reflista); /* extrae el primer elemento de la lista */ Objeto lista_extraer_ultimo(Lista* reflista); /* extrae el último elemento de la lista */ Lista lista_extraer_rango(Lista* reflista, int inicio, int final); /* extrae una sublista */ int borra_lista(Lista* reflista); /* desocupa la lista cuando no se siga utilizando */ #endif