Une liste doublement chainée, c´est une structure :
struct chaine
{
T elem;
struct chaine* prec;
struct chaine* suiv;
};
(tu remplaces T par ce que tu veux, int, double, float, pour faire une liste chainée de int, de double, de float, ...)
tu as aussi 2 pointeurs.
Quand tu ajoutes un élément, tu malloc la struct (sans rien détruire), tu mets l´élément a jour, et tu fais crée les liens (pour les 2 pointeurs).
Donc quand tu ajoutes un élément, tu n´effaces rien, tu malloc une nouvelle maille, et tu lie aux autres.
Evidemment, les anciens liens des anciennes mailles peuvent avoir changé (pour pointer sur la nouvelle au lieu de NULL, ou d´une autre)