diff --git a/libs/lista.c b/libs/lista.c
index 3e0700c69600307c57ff3681697c89ac692908c5..9178c23940ea2789675097c236e1df9d00c7c532 100644
--- a/libs/lista.c
+++ b/libs/lista.c
@@ -147,6 +147,7 @@ bool removeNo(struct Lista *l, struct No *rNo, bool destroi(void *)) {
     for (No n = primeiroNoLista(l); getSucessorNo(n); n = getSucessorNo(n)) {
         if (getSucessorNo(n) == rNo) {
             setSucessorNo(n, getSucessorNo(rNo));
+            setAntecessorNo(getSucessorNo(rNo), n);
             if (destroi != NULL) {
                 r = destroi(getConteudo(rNo));
             }
@@ -157,3 +158,12 @@ bool removeNo(struct Lista *l, struct No *rNo, bool destroi(void *)) {
     }
     return false;
 }
+
+No pertenceLista(void *conteudo, Lista l) {
+    for(No n = primeiroNoLista(l); n; n = getSucessorNo(n)) {
+        if(conteudo == getConteudo(n)) {
+            return n;
+        }
+    }
+    return NULL;
+}
diff --git a/libs/lista.h b/libs/lista.h
index 33eb81465ea3d46e242c1e18a4354a2c741c629d..58eedbed3ab0d64c65ccde81b731fd50bf6d365c 100644
--- a/libs/lista.h
+++ b/libs/lista.h
@@ -62,4 +62,9 @@ bool destroiLista(Lista l, bool destroi(void *));
 //         false, se rNo não for um No de l
 
 bool removeNoLista(struct Lista *l, struct No *rNo, bool destroi(void *));
+
+//------------------------------------------------------------------------------
+// retorna o nó que contém *conteudo se está na lista l,
+//      NULL caso contrário
+No pertenceLista(void *conteudo, Lista l);
 #endif