Foro de elhacker.net

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
  1. //Cambiamos los punteros. movemos a la izquierda n posiciones.
  2. template <class TElem>
  3. void TCola<TElem>::lShift (int n) throw (EAccesoIndebido){
  4. if (esVacio()) throw EAccesoIndebido("Cola Vacía");
  5. else if (n>0) {
  6. _ult->_sig=_prim;//el primero pasa a ser el siguiente al ultimo;
  7. TNodoCola<TElem>* tmp;
  8. tmp=_prim->_sig;
  9. _prim->_sig=0;//el siguiente al primero pasa a NULL;
  10. _prim=tmp;
  11. lShift(n-1);
  12. }
  13.  
  14. }
  15.  
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;