Programación General > C/C++

 pila con listas y clases

(1/1)

dunkelheit:
hola tenia un problema de invertir el orden de una fila secuencial y la idea era guardarla en una pila y luego pasarla a otra fila , hize mi programa pero lo quise hacer con mas funciones para hacerlo mas ordenados, el problema es que al poner de argumento la pila al empilar ...no empila.


--- Código: C++ ---#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;} 
espero que me puedan ayudar cual seria el problema ..gracias

Navegación

[0] Índice de Mensajes

Ir a la versión completa