• Jueves 2 de Mayo de 2024, 23:39

Autor Tema:  Listas Multiplemente Enlazadas  (Leído 1249 veces)

berly

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Listas Multiplemente Enlazadas
« en: Domingo 18 de Julio de 2004, 11:26 »
0
;)  ;)  ;) necesito que alguien me explique como crear una lista multiplemente enlazada tomando en cuenta registros de un archivo y con un apuntador que recorra una lista simple para ir creando los nodos a qui esta un pedaso del programa

void mod_tabla()
{
char rutabla1[30]="c:\\Tabla.dat";
char rutacampo1[30]="c:\\Campo.dat";
lista1 *auxl;
lista1 *nuevo;
tablas1 t1;
campos1 c1;
char contenido[50],n_tabla[20],ver[20],rutaa[30];
int ptr=0;
int b=0;
   nuevo=(struct lista1 *) malloc (sizeof(struct lista1));
        if (nuevo==NULL)
           printf ("No hay memoria disponible");


   tabla22=fopen(rutabla1,"ab+");
   campo22=fopen(rutacampo1,"ab+");
    if((tabla22==NULL) || (campo22==NULL))
      {
       printf("ERROR");
      }
    else
         {
       printf("\nDame el nombre de la tabla a modificar:  ");
       scanf("%s",&n_tabla);
    do
    {
    fread(&t1,sizeof(t1),1,tabla22);
         ptr=strcmp (n_tabla,t1.nom_tabla);
         if(ptr==0)
         {
         b=b+1;
         strcpy(rutaa,t1.ruta);
         if (!feof(tabla22))
    {
    rewind(campo22);

         do
         {
         fread(&c1,sizeof(c1),1,campo22);
         if(( c1.id_tabla==t1.id_tabla) && (!feof(campo22)))
         {
         // ***comenzar lista1***
              nuevo=new(lista1);
              strcpy(nuevo->campo,c1.campo);
              nuevo->tamano = c1.tamano;
              nuevo->sig = NULL;
              if (primero1==NULL)
              {
                 primero1=nuevo;
                 ultimo1=nuevo;
              }
              else
              {
              ultimo1->sig = nuevo;
              ultimo1=nuevo;
              }
         
              }
         }while(!feof(campo22));
   }
   }
    }while(!feof(tabla22));
        }

   
   if (b==0)
        printf("No existe esa tabla");
        else
        { auxl=primero1;
          bd=fopen(rutaa,"ab+");
          do
             { printf("%d",primero1->tamano);
               fread(&nuevom->contenido,auxl->tamano,1,bd);
          if(!feof(bd))
                       {
                       
                        nuevom=new(multiple);
                        nuevom->abajo = NULL;
                        nuevom->izq = NULL;
                        nuevom->der = NULL;
                       
                         // ***comenzar lista_multiplemente***
                          if (auxl==primero1)
                            {
                             
                               if (base==NULL)
                                  {
                                      auxm=nuevom;
                                      base=nuevom;
                                      fila=nuevom;
                                      columna=nuevom;
                                                                       
                                  }//fin del if base
                               else
                                  {
                                   
                                   if((base->abajo!=NULL) && (columna->abajo!=NULL))
                                    {auxm=auxm->abajo;
                                     columna=auxm;
                                     columna->abajo=nuevom;
                                     fila=nuevom;
                                    }
                                    else
                                    {base->abajo=nuevom;
                                     auxc=columna;
                                     fila=nuevom;
                                    }
                                  }//fin del else para el caso 3
               
                               // auxl=auxl->sig;
                               
                             }//fin del if primero
                            else
                             {
               
                                if (base->abajo==NULL)
                                    {
                                     
                                      fila->der=nuevom;
                                      nuevom->izq=fila;
                                      fila=fila->der;
                                     
                                    } //fin del if caso2
                                else
                                    {
                                      columna=columna->der;
                                      fila->der=nuevom;
                                      nuevom->izq=fila;
                                      fila=fila->der;
                                      columna->abajo=nuevom;
                                    } //fin del else caso 4
                   
                               // auxl=auxl->sig;
                             } //fin del else para caso2,4
                   
              auxl=auxl->sig;
              if (auxl==NULL)
                  auxl=primero1;
              }//fin del archivo          
           
     }while(!feof(bd));

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Listas Multiplemente Enlazadas
« Respuesta #1 en: Domingo 18 de Julio de 2004, 18:46 »
0
y cual es tu problema?

la verdad no tengo tiempo para ponerme a mirar todo el codigo , pdrias ser mas puntual?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io