RE:Listas doblemente enlazadas
A ver, pongamos como ejemplo este tipo de dato como nodo de la lista:
typedef struct nodo {
char nombre[20];
struct nodo *anterior;
struct nodo *proximo;
} Nodo;
Y definamos los siguientes punteros:
Nodo *Actual, *Nuevo;
Supongamos que Actual apunta a uno de los nodos de la lista y queremos insertar un nuevo nodo, ya creado fuera de la lista, y por ahora apuntado por Nuevo.
Nuevo->proximo = Actual->proximo;
Nuevo->anterior = Actual;
Actual->proximo->anterior = Nuevo;
Actual->proximo = Nuevo;
Si queremos eliminar el objeto de la lista apuntado por Actual:
Actual->anterior->proximo = Actual->proximo;
Actual->proximo->anterior = Actual->anterior;
free(Actual);
Si dibujás los nodos y ponés flechas desde cada puntero a un nodo, vas a ver gráficamente por qué se hacen esos movimientos de punteros para agregar y eliminar.
G