Grabar Lista enlazada en Fichero
Publicado por Eduardo (1 intervención) el 14/03/2008 23:09:58
Hola!!! Quisiera Grabar mi lista enlazada en un fichero!! Como podria hacerlo?? Gracias de todas formas
struct datos
{
int codigo;
char nombre[10];
}; // Estructura que define los datos a manejar por el programa
struct nodo
{
struct datos dato;
struct nodo *sig;
};
struct nodo * introducir( struct nodo *cabeza);
int menu();
void listar(struct nodo *cabeza);
void main ()
{
struct nodo *primero=NULL;
int opc;
do
{
opc=menu();
switch(opc)
{
case 1:
primero=introducir(primero);
break;
case 2:
listar(primero);
break;
}
}while(opc!=3);
}
int menu()
{
int opcion;
do
{
system("cls");
printf(" MeNu ");
printf(" 1.- ReGisTraR uNa VeNTa.");
printf(" 2.- LiSTar.");
printf(" 3.- SaLiR.");
printf(" IntroDuzCa uNa oPCioN... ");
scanf("%d",&opcion);
if(opcion<=0 || opcion>3)
printf(" MEEEEEC. 3RR0R");
}while(opcion<=0 || opcion>3);
return opcion;
}
struct nodo *introducir( struct nodo *cabeza)
{
struct nodo *aux=cabeza;
struct nodo *paux;
aux=(struct nodo *)malloc(sizeof(struct nodo));
if(aux==NULL)
exit(-1);
aux->sig=NULL;
printf(" CoDiGo... ");
scanf("%d",&aux->dato.codigo);
fflush(stdin);
printf(" NomBre... ");
scanf("%10[^ ]", &aux->dato.nombre);
if(cabeza==NULL)
cabeza=aux;
else
{
paux=cabeza;
while(paux->sig!=NULL)
{
paux=paux->sig;
}
paux->sig=aux;
}
return cabeza;
}
void listar(struct nodo *cabeza)
{
struct nodo *paux; // --> Se crea puntero auxiliar
paux=cabeza; // --> Se igualan ambos. Esto se hace para recorrer con el
// puntero y no el parametro cabeza.
/*( Proceso... Como recorrer un puntero)*/
while(paux!=NULL)
{
//(1). Si puntero aux es != nuLL...
// Visualizo los datos de la venta registrados en el nodo paux
printf(" ...ProDuCTo... ");
printf(" CoDiGo.... %d",(paux->dato).codigo);
printf(" NoMBre.. %s",(paux->dato).nombre);
//(2). Avanzo un nodo...
paux=paux->sig;
}
return;
}
struct datos
{
int codigo;
char nombre[10];
}; // Estructura que define los datos a manejar por el programa
struct nodo
{
struct datos dato;
struct nodo *sig;
};
struct nodo * introducir( struct nodo *cabeza);
int menu();
void listar(struct nodo *cabeza);
void main ()
{
struct nodo *primero=NULL;
int opc;
do
{
opc=menu();
switch(opc)
{
case 1:
primero=introducir(primero);
break;
case 2:
listar(primero);
break;
}
}while(opc!=3);
}
int menu()
{
int opcion;
do
{
system("cls");
printf(" MeNu ");
printf(" 1.- ReGisTraR uNa VeNTa.");
printf(" 2.- LiSTar.");
printf(" 3.- SaLiR.");
printf(" IntroDuzCa uNa oPCioN... ");
scanf("%d",&opcion);
if(opcion<=0 || opcion>3)
printf(" MEEEEEC. 3RR0R");
}while(opcion<=0 || opcion>3);
return opcion;
}
struct nodo *introducir( struct nodo *cabeza)
{
struct nodo *aux=cabeza;
struct nodo *paux;
aux=(struct nodo *)malloc(sizeof(struct nodo));
if(aux==NULL)
exit(-1);
aux->sig=NULL;
printf(" CoDiGo... ");
scanf("%d",&aux->dato.codigo);
fflush(stdin);
printf(" NomBre... ");
scanf("%10[^ ]", &aux->dato.nombre);
if(cabeza==NULL)
cabeza=aux;
else
{
paux=cabeza;
while(paux->sig!=NULL)
{
paux=paux->sig;
}
paux->sig=aux;
}
return cabeza;
}
void listar(struct nodo *cabeza)
{
struct nodo *paux; // --> Se crea puntero auxiliar
paux=cabeza; // --> Se igualan ambos. Esto se hace para recorrer con el
// puntero y no el parametro cabeza.
/*( Proceso... Como recorrer un puntero)*/
while(paux!=NULL)
{
//(1). Si puntero aux es != nuLL...
// Visualizo los datos de la venta registrados en el nodo paux
printf(" ...ProDuCTo... ");
printf(" CoDiGo.... %d",(paux->dato).codigo);
printf(" NoMBre.. %s",(paux->dato).nombre);
//(2). Avanzo un nodo...
paux=paux->sig;
}
return;
}
Valora esta pregunta


0