Ver Mensaje Individual
  #5 (permalink)  
Antiguo 22/03/2016, 22:03
darkedlico94
 
Fecha de Ingreso: julio-2013
Mensajes: 9
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: imprimir lista en c++

Hola, muchas gracias por explicarme, lo he hecho así como me dijiste y aún no me ha quedado , si mando llamar la función imprimir adentro del main no hace nada, pero si imprimir la mando llamar dentro de la función proceso si entra hasta la parte del cout que dice "solo texto" y de ahí se traba. No sé que está pasando.
Código:
#include <iostream>

using namespace std;
class Memoria{
public:
struct elemento{
        //  int id;
        char dato;
        // int tam;
        elemento *sig;
        
    }*pila;
    //pila *indice;
public:
      
    Memoria(){ //constructor iniciamos en 0
        pila=NULL;
    }
    
   void insertar(char d/*, int t*/){
        elemento *q;
        q=new elemento();
       
        q->dato=d;
      
        q->sig=pila; //q->sig apunta a lo que está apuntando m
        pila=q;
       
    }
    
    char extraer (){
        elemento *q;
        char d;
        
        if(pila==NULL){
            cout<<"\n Pila vacia";
            // return -1;
        }
        q=pila;
        pila=q->sig;
        d=q->dato;
        delete q;
        return d;
    }
   
   /* void muestra(char n)
    {
        cout<<"\n Dato : "<<n;
    }
   */
    
    void imprimir()
    {
        elemento *q;
        char d;
       if(q!=nullptr){
       while(q!=nullptr){
        
            cout<<"\n solo imprimo";
            cout<<"\n : "<<q->dato;
            q=q->sig;
       }
    }
        else{
            cout<<"\n Vacia";
        }
    }
    
    
   
    
    
    bool vacia(){
        if(pila==NULL)
            return true;
        return false;
        
    }
    
     ~Memoria(){
     while(pila!=NULL){
     extraer();
     }
     }
};

/*void muestra()
{
    Memoria p;
    p.imprimir()
        
    }
 
}
*/
char datos(){
    char d;
    cout<<"\n proceso: ";
    cin>>d;
    return d;
    
}

int tamanio(){
    int t;
    cout<<"\n Tamaño: ";
    cin>>t;
    return t;
}


void proceso(char n){
    Memoria p;
    int len=-1;
    char *array;
    p.insertar(n);
   
    cout<<"\n"<<n;
   // p.imprimir(); //aquì imprimir si ejecuta hasta el cout pero de ahí ya nada (se atora el programa)
    
   }

void ejecutar(int np){
    
}

void transferir(){
    
}

int main() {
    int op;
    int *n,*s,n1,np;
    char d;
    Memoria p;
    do{
    cout<<"\n Menú <-1 para salir>";
    cout<<"\n 1. Almacenar una tarea";
    cout<<"\n 2. Ejecutar tarea (pasar tarea de memoria a cpu)";
    cout<<"\n 3. Eliminar tarea de cpu"<<endl;
    // p.mostrar();
    cout<<"\n Opcion ?: ";
    cin>>op;
    // cout<<"\n 4. Elimina"
     p.imprimir();
    switch (op) {
        case 1:
            cout<<"\n proceso?: ";
            cin>>d;
            proceso(d);
           p.imprimir();//aquí imprimir nada hace
            break;
        case 2:
            cout<<"\n proceso?: ";
            cin>>np;
            
            
            break;
            
            
        default:
            break;
        
    } }   while(op!=-1);
}