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:
Código
La historia es que no me funciona como quiero.
//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); } }
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.