Crear funcion para el TAP TCola

Iniciado por alvareteb, 27 Enero 2012, 14:38 PM

0 Miembros y 1 Visitante están viendo este tema.

alvareteb

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:

Código (cpp) [Seleccionar]

//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.

alvareteb

Ya esta solucionado

me faltaba _ult=_prim; delante de _prim=tmp;