copiar una lista

Monero
17 de Mayo del 2005
struct listaTexto{
char *info;
listaTexto *sig;
};

quiero hacer una copia nueva con un metodo iterativo,
como hago?
no quiero que compartan lugares de memoria.

graicas

hiei
17 de Mayo del 2005
struct listaTexto *insertar (struct listaTexto*s, struct listaTexto *n) {
struct listaTexto *t=s;
if (t) {
while (t-sig) t=t-sig;
t-sig = n;
}
else s = n;
return s;
}

struct listaTexto* copyElement (struct listaTexto *n)
{
struct listaTexto *s = (struct listaTexto*) malloc (sizeof (struct listaTexto);
s->info = strdup (n->info);
s->sig = 0;
reutnr s;
}

struct listaTexto *copiar (struct listaTexto* lista)
{
listaTexto *t, *nueva;
for (t=lista; t; t=t->sig) {
nueva = insertar (nueva, copyElement(t));
}
return nueva;
}

Podrian usar nombres de estructuras mas cortos o hacer al menos un typedef...