#include <iostream.h>
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <conio.c>
#include <iomanip.h>
struct Nodo{
int datos;
Nodo *sgte;
};
void inserta_inicio(Nodo **cab,int dato1);
void crea_final(Nodo **cab);
void salvar_lista(Nodo **cab);
void recupera_lista(Nodo **cab);
void muestra_lista(Nodo **cab);
int main()
{ Nodo *L=NULL,*M=NULL;
crea_final(&L);
salvar_lista(&L);
recupera_lista(&L);
muestra_lista(&L);
system("PAUSE");
return 0;
}
void crea_final(Nodo **cab){
Nodo *Q,*T;
int valor,i=1,n,dat;
Q=(Nodo*)malloc(sizeof(Nodo));
printf("Ingrese valor del primer nodo: ");
cin>>valor;
Q->datos=valor;
Q->sgte=NULL;
*cab=Q;
T=*cab;
printf("Ingrese numero de nodos a crear ");
cin>>n;
while(i<=n){
Q=(Nodo*)malloc(sizeof(Nodo));
printf("Ingrese dato: ");
cin>>dat;
Q->datos=dat;
Q->sgte=NULL;
T->sgte=Q;
T=Q;
i++;
}
}
void salvar_lista(Nodo **cab){
Nodo *Q;
FILE *B;
int sw=0;
B=fopen("prav","w");
if(B==NULL){
cout<<"No se puede abrir el archivo"<<endl;
}
Q=*cab;
while(Q!=NULL){
fwrite(Q,sizeof(Nodo),1,B);
Q=Q->sgte;
sw=1;
}
if(sw){
cout<<"Lista salvada"<<endl;
}
else{
cout<<"Lista vacia"<<endl;
}
fclose(B);
}
void recupera_lista(Nodo **cab){
Nodo *R;
FILE *B;
int sw=0;
B=fopen("prav","r");
if(B==NULL){
cout<<"Archivo no encontrado...";
}
*cab=NULL;
while(!feof(B)){
R=(Nodo*)malloc(sizeof(Nodo));
if(R==NULL){
cout<<"No hay memoria"<<endl;
}
if(fread(R,sizeof(Nodo),1,B)!=1)
break;
inserta_final(&cab,R);
sw=1;
}
if(sw){
cout<<"Lista recuperada "<<endl;
}
else{
cout<<"Lista vacia"<<endl;
}
fclose(B);
}
void inserta_final(Nodo **cab,int dato1){
Nodo *Q,*T;
if(*cab==NULL){
Q=(Nodo*)malloc(sizeof(Nodo));
Q->datos=dato1;
Q->sgte=NULL;
*cab=Q;
}
else{
T=*cab;
while(T->sgte!=NULL){
T=T->sgte;
}
Q=(Nodo*)malloc(sizeof(Nodo));
Q->datos=dato1;
Q->sgte=NULL;
T->sgte=Q;
}
}