Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/04/2002, 06:33
SuperJavi
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 4 meses
Puntos: 0
Lista enlazada en C

Hola a todos. Tengo que hacer un programa de gestión para el módulo que estudio. Se trata de un hotel con 10 habitaciones que tengo que inicializar dinámicamente al inicio del programa. Esta es mi estructura:

struct Habitacion {
char nombre[30];
int dias, PrecioDia, descuento, ocupada;
struct Habitacion *sig;
}

Y pongo un puntero para almacenarme siempre la dirección de la primera posicion:

struct Habitacion *Hotel;

Pues bien, inicializa todas las posiciones con:

ptr=(struct Habitacion *)(malloc(sizeof(struct Habitacion)))
Hotel=ptr;
(*ptr).ocupada=0;
aux=NULL; (siendo aux otra variable del mismo tipo, struct Habitacion)
(*ptr).sig=aux;
ptr=(*ptr).sig;

Esto sería la primera inicialización y el resto iría dentro de un for.
Pues no me funciona, me asigna siempre la misma dirección de memoria (lo miro en cada paso con cout<<&ptr) y (*ptr).sig, aux y ptr tienen distintas direcciones asignadas las 3, habiéndolas igualado anteriormente. ¿COmo puede ser esto? ¿Alguna solución?

Perdonad por este rollo. Ciaoo.