Código:
template<class T>
class ListaDEnlazada {
Nodo<T> *cabecera, *cola;
public:
ListaDEnlazada() : cabecera(0), cola(0) {}
~ListaDEnlazada();
ListaDEnlazada(const ListaDEnlazada &l);
ListaDEnlazada &operator=(ListaDEnlazada &l);
Iterador<T> iteradorInicio() { return Iterador<T>(cabecera); }
Iterador<T> iteradorFinal() { return Iterador<T>(cola); }
void insertarInicio(T &dato);
void insertarFinal(T &dato);
void insertar(Iterador<T> &i, T &dato);
void borrarInicio();
void borrarFinal();
void borrar(Iterador<T> &i);
T &inicio() { return cabecera->dato; }
T &final() { return cola->dato; }
};
Código:
#include "Nodo.h"
template<class Ta>
class Iterador {
Nodo<Ta> *nodo;
friend class ListaDEnlazada;
public:
Iterador(Nodo<Ta> *aNodo) : nodo(aNodo) {}
bool hayAnterior() { return nodo != 0; }
bool haySiguiente() { return nodo != 0; }
void anterior() { nodo = nodo->ant; }
void siguiente() { nodo = nodo->sig; }
Ta &dato() { return nodo->dato; }
};
Código:
#include <iostream>
using namespace std;
template<class T>
class Nodo {
public:
T dato;
Nodo *sig;
Nodo(const T &aDato, Nodo *aSig = 0): dato(aDato), sig(aSig) {}
//~Nodo() {}
};