Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: d91 en 19 Octubre 2015, 04:16 am



Título: regresar al primer nodo de lista
Publicado por: d91 en 19 Octubre 2015, 04:16 am
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
  1. void primerAjuste(Tlista &lista, Tlista &memoria){
  2.  
  3.   while(lista != NULL){
  4.  
  5.         if(memoria->estado != 0 && lista->nro < memoria->nro){
  6.  
  7.         lista->asignado = memoria->nro;
  8.  
  9.               memoria->estado = 0;
  10.  
  11.               lista = lista->sgte;
  12.  
  13.  
  14.                 while(memoria->anterior != NULL){
  15.  
  16.                     memoria = memoria->anterior; //regresamos al principio por
  17.                                                     //si hay bloques libres intermedios
  18.                     }//while
  19.  
  20.  
  21.  
  22.         }//if
  23.         else{
  24.  
  25.             memoria = memoria->sgte; //si proceso muy grande o bloque esta ocupado
  26.  
  27.         }//else
  28.  
  29.   }//while lista
  30.  
  31.   while(lista->anterior != NULL){    /*aqui me da error de violacion de direccion*/
  32.  
  33.     lista = lista->anterior;   /*intento regresar la lista al primer nodo*/
  34.   }//regresamos al principio a la lista
  35.                                                    /*porque si la dejo asi cuando intento verla*/
  36.                                                    /*no se puede porque queda en el ultimo nodo*/
  37. }
  38.  
  39.  


Título: Re: regresar al primer nodo de lista
Publicado por: ivancea96 en 19 Octubre 2015, 10:17 am
Código
  1. 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.


Título: Re: regresar al primer nodo de lista
Publicado por: d91 en 20 Octubre 2015, 18:24 pm
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