Si es obligatorio usar lista de listas la cosa cambia.
Tienes que tener 2 tipos de Nodos.
Lista1(supermercado): Puntero a Nodo1
Nodo1(cajero):
Puntero a Lista2 (cola)
Puntero a Nodo1 (siguienteCajero)
Lista2(cola):
puntero a Nodo2 (primero ).
puntero a Nodo2( ultimo )
Nodo2(cliente):
dato (dato)
punetro a nodo2 (siguienteCliente)
Si te da runtime error es porque no haces NEW en todos los sitios bien.
Nuevo cliente en la caja "n":
comprobar que el super esta inicializado ( supermercado != null)
comprobar que tienes n cajeros.
L=supermercado.primero;
( bucle mq L.siguiente !=NULL AND THEN iteraciones < n ) L = L.siguiente;
- si sales con L=NULL -> no hay cajero "n".
Obtener la cola del cajero n. (lacola)
lacola = L.cola;
anadir cliente al final : {
1º Crear el nodo -> nuevoCli = New (Nodo2);
nuevoCli.siguiente = NULL;
nuevoCli.dato = eldato;
2º Asignarlo:
si lacola.ultimo = NULL -> [lacola.primero = nuevoCli; lacola.ultimo = nuevoCli; ]
otro caso [lacola.ultimo.siguiente = nuevoCli; lacola.ultimo = nuevoCli;]
}
Para el main:
Inicializar supermercado:
Nuevo cajero:
si supermercado = null -> creas un nodo y se lo asignas al primero y ultimo de la cola supermercado.
Si supermercado != null -> se lo pones al ultimo.
etc..