Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 3 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Jue Abr 21, 2011 11:19 am
Mensajes: 49
Ubicación: Costa Rica

Nota Publicado: Dom Sep 25, 2011 10:04 pm 
Arriba  
Saludos a todos, bien mi duda es la siguiente tengo una duda sobre como hacer para recuperar los datos de una lista enlazada simple, que anteriormente he guardado. He tratado viendo vídeos en youtube y leyendo múltiples entradas en distintos sitios de internet pero continuo sin obtener resultados. Lo más que he conseguido es recuperar los datos del último nodo, les paso parte del código por si pueden darme una ayuda.
Código:
//**************
//  guardar
//**************
void guardar(nodo *ptr)
{   
   nodo *gunodo=ptr;
   
   ofstream salida("/home/victor/Escritorio/banco_2011.dat",ios::out|ios::ate| ios::binary|ios::app);
   while (gunodo!=NULL)
   {
      
      salida.write(reinterpret_cast<const char *>(gunodo),sizeof(cliente));
      gunodo=gunodo->siguiente;
      }

   }
//**************
//   RECUPERA
//**************
nodo *recuperar(nodo *ptr2)
{nodo *recu, *cab;
int con=0;
     recu =new (nodo);
   //  cab=ptr2;

   ifstream entrada("/home/victor/Escritorio/banco_2011.dat",ios::in);
   
    entrada.read(reinterpret_cast<char *>(recu),sizeof(cliente));

    entrada.seekg(sizeof(cliente)*con,ios::beg);
    while(entrada.peek()!=EOF){
   recu->siguiente=cab;
   cab=recu;
   
  entrada.read(reinterpret_cast<char *>(recu),sizeof(cliente));
con++;

   
}
   

return cab;   
}   


Última edición por cooper1589 el Lun Sep 26, 2011 9:31 am, editado 1 vez en total
 Perfil Email WWW  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Jue Abr 26, 2007 11:00 pm
Mensajes: 1426

Nota Publicado: Lun Sep 26, 2011 8:51 am 
Arriba  
Por lo que llego a comprender del código :? , sería así:

Código:
//**************
//   RECUPERA
//**************
nodo *recuperar(/*nodo *ptr2*/)
{
    // 'nuevo' es un puntero que permite alojar una nueva estructura.
    // 'cab' es un puntero a la cabecera de la lista y se asigna por unica vez.
    // 'recu' es un puntero a la cola de la lista y con cada iteracion se hace
    // una nueva asignacion a 'siguiente' y 'siguiente' se convierte en la nueva cola.
    nodo *nuevo, *cab = NULL, *recu;
    //int con=0;
    //  cab=ptr2;

    ifstream entrada("/home/victor/Escritorio/banco_2011.dat", ios::in);

    // Estas 2 lineas no tienen sentido
    // entrada.read(reinterpret_cast<char *>(recu), sizeof(cliente));
    // entrada.seekg(sizeof(cliente)*con,ios::beg);

    while(entrada.peek() != EOF)
    {
        // Asignas espacio para la nueva entrada.
        nuevo = new (nodo);
        entrada.read(reinterpret_cast<char *>(nuevo),sizeof(cliente));

        if (cab == NULL)
            cab = recu = nuevo;
        else
        {
            recu->siguiente = nuevo;
            recu = recu->siguiente;
        }
    }

    return cab;
}

_________________
"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit."

"Finibus Bonorum Et Malorum", Cicerón

 Perfil WWW  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Jue Abr 21, 2011 11:19 am
Mensajes: 49
Ubicación: Costa Rica

Nota Publicado: Lun Sep 26, 2011 9:29 am 
Arriba  
Uhhhh grande compa, esa era la solución aunque yo tenia una vaga idea de que con cada iteración del while se debía crear un nodo, no tenía muy en claro como lograr esto, analizaré bien lo que arreglaste para tener una mejor idea del asunto. Gracias mil gracias hipersayan_x =D> =D>

 Perfil Email WWW  
Mostrar mensajes previos:  Ordenar por  
 [ 3 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC - 6 horas
Traducción al español por Huan Manwë
phpBB SEO