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

[0] Índice de Mensajes

Ir a la versión completa