#include #include //Classs elemento de la lista enlazada class Elemento{ public: Elemento(int t); //Constructor int Tipo() {return tipo;} //obtener tipo private: int tipo; Elemento *sig; friend class Lista; }; class Lista{ public: Lista() { Cabeza=NULL; } ~Lista() {LiberarLista();} //Destructor inline void Nuevo(int tipo); Elemento *Primero() {return Cabeza;} //Obtener el 1řElemeto Elemento *Siguiente(Elemento *p) {if(p) return p->sig; else return p;}; //Si p es Null bool EstaVacio() {return Cabeza==NULL;} //Averigua si la lista esta vacia private: Elemeto *Cabeza; void LiberarLista(); //Funcion privada para borrar lista }; //Constructor Elemento::Elemento(int t) { tipo=t; sig=NULL; } //A¤adir un nuevo elemento al principio de la lista void Lista::Nuevo(int tipo) { Elemento *p; p=new Elemento(tipo); p->sig=Cabeza; Cabeza=p; } void Lista::LiberarLista() { Elemento *p; while(Cabeza){ p=Cabeza; Cabeza=->sig; delete p; }} int main(int argc, char *argv[]) { Lista miLista; Elemento *e; //Insertamos varios valores en la lista miLista.Nuevo(4); miLista.Nuevo(2); miLista.Nuevo(1); //Y los mostramos en pantalla e=miLista.Primero(); while(e){ cout<Tipo()<<" "; e=miLista.Siguiente(e); } cout<