Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: alvareteb en 27 Enero 2012, 14:38 PM

Título: Crear funcion para el TAP TCola
Publicado por: alvareteb en 27 Enero 2012, 14:38 PM
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.
Título: Re: Crear funcion para el TAP TCola
Publicado por: alvareteb en 27 Enero 2012, 15:38 PM
Ya esta solucionado

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