Hola.
Estoy haciendo una funcion lShift (int n) que desplace los elementos de la cola a la izquierda n posiciones. Si movieramos una posicion, el primer elemento de la cola seria el que estaba segundo y el último el que estaba primero.
Esta es mi solucion:
//Cambiamos los punteros. movemos a la izquierda n posiciones.
template <class TElem>
void TCola<TElem>::lShift (int n) throw (EAccesoIndebido){
if (esVacio()) throw EAccesoIndebido("Cola Vacía");
else if (n>0) {
_ult->_sig=_prim;//el primero pasa a ser el siguiente al ultimo;
TNodoCola<TElem>* tmp;
tmp=_prim->_sig;
_prim->_sig=0;//el siguiente al primero pasa a NULL;
_prim=tmp;
lShift(n-1);
}
}
La historia es que no me funciona como quiero.
Tengo una cola de 11 elementos: 1 2 3 4 5 6 7 8 9 10 11
y al moverlo dos posiciones a la izquierda (cola.lShift(2)) me devuelve
3 4 5 6 7 8 9 10 11 2
¿Alguien ve el error?
Gracias.
Ya esta solucionado
me faltaba _ult=_prim; delante de _prim=tmp;