Programación General > C/C++
Re: Listas Doblemente enlazadas con manejo de cadenas
(1/1)
ucablex:
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...
JuanK:
principio basico:
--- Código: Text --- struct list{ struct list *back; struct list *next; int data;}; int main(){ struct list *lista, -*aux; int i=2; /*crear nodo 1*/ lista=(struct list *)malloc(sizeof(estruct list)); lista->ant=NULL; lista->next=NULL; lista->data=1; /*crear 49 nodos adicionales*/ while (i<50) { aux=(struct list *)malloc(sizeof(estruct list)); lista->next=aux; aux->back=lista; aux->next=NULL; aux->data=i; lista=aux; i++; } return 1;}
Espero que te sea de ayuda
chauu
juank
Navegación
Ir a la versión completa