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));