#ifndef __LISTA_HPP__ #define __LISTA_HPP__ 1 #include typedef void* Objeto; struct nodo_lista { Objeto data; // el objeto guardado en el nodo nodo_lista* sig; // el siguiente nodo de la lista nodo_lista(Objeto item, nodo_lista* siguiente=NULL); // constructor, equivale a nuevo_nodo(Objeto,struct nodo_lista*) }; class Lista { private: nodo_lista* primero; // miembro único de la Lista: apuntador al primer nodo nodo_lista* buscar(int posicion); // método privado, equivale a lista_buscar(Lista*,int) nodo_lista** previo(int posicion); // método privado, equivale a lista_previo(Lista*,int) nodo_lista* ultimo(); // método privado, equivale a lista_ultimo(Lista*,int) nodo_lista** penultimo(); // método privado, equivale a lista_penultimo(Lista*,int) public: Lista (nodo_lista* N=NULL); // constructor, sin parámetros equivale a nueva_lista() Lista (Lista& origen); // constructor de copia, equivale a copia_lista(Lista) Lista (Lista& origen, int inicio, int final); // equivale a copia_sublista(Lista,int,int) ~Lista (); // destructor, equivale a borra_lista() int vacia(); // indica si la lista está vacía int contar(); // devuelve el número de elementos de la listas Objeto item(int posicion); // devuelve el objeto en la posición posicion Lista& agregar(Objeto item, int posicion); // agrega un objeto en una posicion Lista& agregar_inicio(Objeto item); // agrega un objeto al inicio de la lista Lista& agregar_final(Objeto item); // agrega un objeto al final de la lista Lista& insertar(Lista& origen, int posicion); // inserta el contenido de otra lista Lista& insertar_inicio(Lista& origen); // idem. al inicio Lista& insertar_final(Lista& origen); // idem. al final Lista& borrar(int posicion); // borra el contenidos en la posición posicion Lista& borrar_primero(); // borra el primer elemento de la lista Lista& borrar_ultimo(); // borra el último elemento Lista& borrar(int posicion, int final); // borra un rango de elementos Objeto extraer(int posicion); // devuelve un elemento y lo borra de la lista Objeto extraer_primero(); // devuelve el pirmer elemento y lo borra de la lista Objeto extraer_ultimo(); // devuelve el último elemento y lo borra de la lista Lista& extraer(int primero, int final); // devuelve una sublista y disminuye la lista }; #endif