Tanto la cola (queue), como la cola con prioridad (priority_queue) son tipos de datos ya existentes en STL, si es que te dejan usarla.
http://www.cplusplus.com/reference/queue/queue/.
http://www.cplusplus.com/reference/q...riority_queue/.
Una cola es una estructura de datos FIFO (First In First Out), es decir que el primero que entre a la cola es el primero que debe de salir.
Una cola con prioridad es una cola en el que existen un valor asignado a cada dato al que denominamos prioridad que nos indica si el elemento debe salir antes, en este caso no nos fijamos en si un elemento tiene más prioridad que otro y, dependiendo del propio diseño que hagas aunque puede ser FIFO o no.
Veamos tu problema en concreto ahora:
a) La prioridad queda definida por:
1-Tiene más prioridad aquel elemento que tenga un menor número de dígitos.
2-En caso de tener igual número de dígitos el menor en el orden usual de los números naturales es el que saco.
En conclusión, tendrás que utilizar una estructura de datos que conozcas y creas eficiente para el uso en la que vas a tener que añadir los elementos uno detrás de otro y tendrás que sacarlos teniendo en cuenta las restricciones de prioridad. El que debes de sacar siempre es el que tenga la mayor prioridad.
Saludos.