#include <iostream>
#include <conio.h>
using namespace std;
struct nodo{
int valor;
nodo *sig;
};
class pila{
private:
nodo *cima;
public:
void empilar(int);
int desempilar();
void mostrar();
pila();
~pila();
};
pila::pila(){
cima = NULL;
}
pila::~pila(){
nodo * n = new nodo;
n = cima;
while(n!=NULL){
cima = n;
n=n->sig;
delete(cima);
}
delete(n);
}
void pila::empilar(int v){
nodo * nuevo = new nodo;
nuevo->valor = v;
nuevo->sig = NULL;
if(cima != NULL){
nuevo->sig = cima;
}
cima = nuevo;
}
int pila::desempilar(){
int valor;
if(cima==NULL) cout<<"Pila vacia";
else{
valor = cima->valor;
cima = cima->sig;
}
return valor;
}
void pila::mostrar(){
nodo * n = new nodo;
n = cima;
if(n==NULL){cout<<"nVACIO"<<endl;}
while(n!=NULL){
cout<<"Valor:"<<n->valor<<endl;
n=n->sig;
}
}
int menu(){
int op;
cout<<"[1]Crear fila"<<endl;
cout<<"[2]Invertir fila"<<endl;
cout<<"elegir:";
cin>>op;
return op;
}
void fila(){
FILE *F;
int n,dato;
F=fopen("datos.txt","a+");
cout<<"cuantos datos desea ingresar:";
cin>>n;
for(int i=0;i<n;i++){
cout<<"escribe el dato:";cin>>dato;
fwrite(&dato,sizeof(dato),1,F);
}
fclose(F);
}
int empilarfila(pila p){
FILE *F;
int dato,i=0;
F=fopen("datos.txt","r");
fread(&dato,sizeof(dato),1,F);
while(!feof(F)){
cout<<"empilando:"<<dato<<endl;
p.empilar(dato);
fread(&dato,sizeof(dato),1,F);
i++;
}
return i;
}
void desempilarfila(int n,pila p){
FILE *G;
int dato;
G=fopen("back.txt","a+");
for(int i=0;i<n;i++){
dato=p.desempilar();
fwrite(&dato,sizeof(dato),1,G);
}
fclose(G);
}
int main(){
pila p1;
int opcion,n;
do{
opcion=menu();
if(opcion==1){
fila();
}
else{
if(opcion==2){
n=empilarfila(p1);
p1.mostrar();
//desempilarfila(n,p1);
}
}
}while(opcion);
return 0;
}