listas doblemente enlazadas en c++

bigMander
11 de Mayo del 2008
hola comunidad forera, soy nuevo por aqui y vengo a pedir ayuda para una clase de listas doblemente enlazadas usando recursividad, mi problema es al momento de borrar nodos aqui esta el codigo para que lo analicen

struct Nodo {
int valor;
Nodo* sig, *ant;
};

class ListaDoblementeEnlazada {
Nodo* lista;
public:
ListaDoblementeEnlazada() {
lista = NULL;
}

void Insertar(Nodo** lista, int v) {
if(*lista == NULL) {
(*lista) = new Nodo;
(*lista)->valor = v;
(*lista)->sig = NULL;
(*lista)->ant = NULL;
}
else
Insertar(&(*lista)->sig, &(*lista), v);
}

void Insertar(Nodo** lista, Nodo** listaAnt, int v) {
if(*lista == NULL) {
(*lista) = new Nodo;
(*lista)->sig = NULL;
(*lista)->ant = (*listaAnt)->sig;
(*lista)->valor = v;
}
else
Insertar(&(*lista)->sig, &(*lista), v);
}
void Remover (Nodo** lista, int v) {
if((*lista)->valor != v)
Remover(&(*lista)->sig, &(*lista), v);
else {
aux = *lista;
lista = aux->sig;
delete aux;
}
}
void Remover(Nodo** lista, Nodo** listaAnt, int v) {
if((*lista)->valor != v)
Remover(&(*lista)->sig, &(*lista));
else {
aux = *lista;
*lista = aux->sig;
listaAnt->sig = lista;
delete aux;
}
}
};

mi problema es que no estoy seguro si sirva ya que lo hice al tanteo ojala y sirva gracias y espero sus respuestas