[ Foro de C++ ]

Duda nodos Listas y colas

01-Nov-2019 16:14
Invitado (Programador fustrado)
0 Respuestas

Buenos días!

Tengo una lista donde meto un objeto, y este objeto tiene un atributo que es una cola donde inserto otro tipo de objeto. El problema es que no puedo acceder a los datos de la cola. Pongo el código:

///Main

Creo el objeto y lo inserto en la lista.

Box box1(1);
listaBox.insertarBox(box1);

\\Método que inserta en la clase Lista:
void Lista::insertarBox(Box b)
{
lnodo nuevo;
nuevo = new NodoLista(b);
if(ultimo)
ultimo->siguiente = nuevo;
ultimo = nuevo;
if(!primero)
primero = nuevo;
}

Ahora en ese objeto (box) introduzco un objeto(pasajero):
box1.insertar(pasajero);

Y lo inserto en la cola del objeto box:
void Box::insertar(Pasajero p)
{
cout << "Inserto el pasajero en el box " << getId() << "\n";
cola.insertarConPrioridad(p);
pasajerosCola = pasajerosCola + 1;
}

Hasta aqui todo bien. Cuando quiero mostrar los datos del box en el main, si intento acceder desde la lista no me sale nada, pero si lo hago desde el objeto box si:

Estos son los métodos para mostrar la cola del objeto box:
listaBox.mostrarLista();
box1.mostrarBox();

\\void Lista::mostrarLista()
{
lnodo aux = primero;
cout << "Box: ";
while(aux) {
aux->box.mostrarBox();
aux = aux->siguiente;
}
cout << endl;
}

void Box::mostrarBox()
{
cout << "Id del Box en la lista: " << id << " y pasajeros insertados " << pasajerosCola << "\n";
cola.mostrar();
}

void Cola::mostrar()
{
pnodo aux = primero;
cout << "Cola: ";
while(aux) {
aux-> pasajero.mostrar();
aux = aux->siguiente;
}
cout << endl;
}

En mostrarLista he debuggeado revisado que los punteros a la cola del objeto box no tienen referencia.

Este es el resultado del print:

Box: Id del Box en la lista: 1 y pasajeros insertados 0
Cola:

Id del Box en la lista: 1 y pasajeros insertados 9
Cola: ID Pasajero -> 2 Prioridad -> 7 Hora llegada -> 5 Box -> 0 Entrada box -> 0 Duracion atencion -> 39 Tiempo total de espera ->0
ID Pasajero -> 8 Prioridad -> 7 Hora llegada -> 14 Box -> 0 Entrada box -> 0 Duracion atencion -> 31 Tiempo total de espera ->0
ID Pasajero -> 7 Prioridad -> 6 Hora llegada -> 9 Box -> 0 Entrada box -> 0 Duracion atencion -> 16 Tiempo total de espera ->0
ID Pasajero -> 1 Prioridad -> 6 Hora llegada -> 0 Box -> 0 Entrada box -> 0 Duracion atencion -> 20 Tiempo total de espera ->0
ID Pasajero -> 4 Prioridad -> 5 Hora llegada -> 7 Box -> 0 Entrada box -> 0 Duracion atencion -> 27 Tiempo total de espera ->0
ID Pasajero -> 9 Prioridad -> 4 Hora llegada -> 11 Box -> 0 Entrada box -> 0 Duracion atencion -> 23 Tiempo total de espera ->0
ID Pasajero -> 5 Prioridad -> 3 Hora llegada -> 21 Box -> 0 Entrada box -> 0 Duracion atencion -> 20 Tiempo total de espera ->0
ID Pasajero -> 6 Prioridad -> 2 Hora llegada -> 18 Box -> 0 Entrada box -> 0 Duracion atencion -> 14 Tiempo total de espera ->0
ID Pasajero -> 3 Prioridad -> 1 Hora llegada -> 0 Box -> 0 Entrada box -> 0 Duracion atencion -> 15 Tiempo total de espera ->0

Creo que en aux->box.mostrarBox(); pierdo la referencia del nodo a la cola, pero no sé que se me escapa.

¿Alguna idea?

Muchas gracias!




Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...