2
« en: Lunes 19 de Mayo de 2003, 05:28 »
Señores disculpen la ignorancia pero como inserto un elemento en una lista Doblemente enlazada... mi parametro es un string y lo recibo por un archivo de texto... hago la lectura y luego mando a la funcion insertar pero se ejecuta tres veces y despues hay una error y no lo logro ver... aqui esta mas o menos el codigo para ver si me ayudan... esta es la definicion ....struct _nodo { StringNombre; struct _nodo *Siguiente; struct_nodo*Anterior;};
typedef struct _nodo LineaUno,LineaDos,LineaTres;
typedef LineaUno *pNodo;
typedefLineaUno*Lista; y esta es mi funcion insertar void insertar(Lista*l,StringEstacion);
aqui esta la definicion ... void insertar(Lista *lista, String Estacion)
{
pNodo nuevoPtr,actualPtr;
/* Crear un nuevo nodo */
nuevoPtr = (pNodo)malloc(sizeof(LineaUno));
strcpy((nuevoPtr->Nombre),Estacion) ;
printf("n%s",(nuevoPtr->Nombre)); //solo para debugger
/* Colocamos actual en la primera posicion de la lista */
actualPtr = *lista;
if (actualPtr) while (actualPtr->Siguiente) actualPtr = actualPtr->Anterior;
if (!actualPtr) {
/* Añadimos la lista a continuacion del nuevo nodo*/
nuevoPtr->Siguiente = actualPtr;
nuevoPtr->Anterior = NULL;
if (actualPtr) actualPtr->Anterior = nuevoPtr;
if (!*lista) *lista = nuevoPtr;}
else {
/* Avanzamos hasta el ultimo elemento*/
/*Insertamos el nuevo nodo despues del nodo anterior*/
nuevoPtr->Siguiente = actualPtr->Siguiente;
actualPtr->Siguiente = nuevoPtr;
nuevoPtr->Anterior = actualPtr;
if (nuevoPtr->Siguiente) nuevoPtr->Siguiente->Anterior = nuevoPtr;
}
} les agradeceria que me resolvieran el embrollo ...gracias...