regresar al primer nodo de lista

Iniciado por d91, 19 Octubre 2015, 04:16 AM

0 Miembros y 1 Visitante están viendo este tema.

d91

hola, tengo una lista doblemente enlazada, y estoy simulando el primer ajuste estatico de memoria, pero al realizar las asignaciones, la lista queda en el ultimo nodo y a pesar que tengo un nodo que referencia al anterior no puedo regresar, cosa que si puedo hacer con la lista donde tengo los procesos, el error me lo da exactamente en el ultimo while
Código (cpp) [Seleccionar]

void primerAjuste(Tlista &lista, Tlista &memoria){

   while(lista != NULL){

         if(memoria->estado != 0 && lista->nro < memoria->nro){

          lista->asignado = memoria->nro;

               memoria->estado = 0;

               lista = lista->sgte;


                   while(memoria->anterior != NULL){

                     memoria = memoria->anterior; //regresamos al principio por
                                                     //si hay bloques libres intermedios
                     }//while



         }//if
         else{

            memoria = memoria->sgte; //si proceso muy grande o bloque esta ocupado

         }//else

   }//while lista

   while(lista->anterior != NULL){    /*aqui me da error de violacion de direccion*/

      lista = lista->anterior;   /*intento regresar la lista al primer nodo*/
   }//regresamos al principio a la lista
                                                    /*porque si la dejo asi cuando intento verla*/
                                                    /*no se puede porque queda en el ultimo nodo*/
}



ivancea96

Código (cpp) [Seleccionar]
while(lista != NULL)
Cuando salga del bucle, "lista" va a ser igual a NULL.

Lo que tienes que puedes hacer, es guardar un puntero al comienzo de la lista al principio.

d91

la solucion fue trabajar con una copia de la lista, aunque me quedo con la duda, porque use una lista doblemente enlazada para poder ir de derecha a izquierda y viceversa y en esta ocasion no fue asi