Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: indict en 10 Julio 2013, 19:21 pm



Título: dar la vuelta elementos de una lista
Publicado por: indict en 10 Julio 2013, 19:21 pm
Hola,
quiero crear una acció que dada una lista, me de la vuelta
1,2,3,4,5 cambie a 5,4,3,2,1

Código
  1. void voltear(list<int> &l){
  2.  
  3. list<int>:: iterator it1=l.begin();
  4. list<int>:: iterator it2=l.end();
  5.  
  6. while(it1!=l.end()){
  7.  
  8. it2=l.insert(it2,*it1);
  9.  
  10. it1=l.erase(it1);
  11.  
  12.                   }
  13. }

Mi idea es coger el primer elemento y insertarlo al final de la lista. Como el it2 está en el final de lista, la inserción se aplicará al último elemento.
Luego eliminar el primer elemento de la lista con la función erase(it) y como la función elimina el elemento que apunta y luego pasa al siguiente entonces he prescindido del contador. Por qué sino se saltaría un elemento.
Pero no termino de plasmar correctamente la idea ya que la función no modifica la lista.

Gracias por cualquier aportación.


Título: Re: dar la vuelta elementos de una lista
Publicado por: amchacon en 10 Julio 2013, 19:41 pm
Código
  1. 1t1.reverse();

 ;D


Título: Re: dar la vuelta elementos de una lista
Publicado por: dato000 en 10 Julio 2013, 20:11 pm
ehhhhhh hagamos de cuenta que huele a troll en serio XDDD

http://www.cplusplus.com/reference/list/list/rend/
http://www.cplusplus.com/reference/list/list/rbegin/

otra forma es simplemente copiar a otra lista con los elementos inicializados en la posicion final de la lista inicial y pasar por medio de un for, pero en vez de un insert y erase, no se altera la segunda lista, sino que simplemente se usa un push back, facil, como usando arreglos.


Título: Re: dar la vuelta elementos de una lista
Publicado por: amchacon en 10 Julio 2013, 20:58 pm
ehhhhhh hagamos de cuenta que huele a troll en serio XDDD

http://www.cplusplus.com/reference/list/list/rend/
http://www.cplusplus.com/reference/list/list/rbegin/

otra forma es simplemente copiar a otra lista con los elementos inicializados en la posicion final de la lista inicial y pasar por medio de un for, pero en vez de un insert y erase, no se altera la segunda lista, sino que simplemente se usa un push back, facil, como usando arreglos.
La función reverse existe:
http://www.cplusplus.com/reference/list/list/reverse/

Pero ha quedado muy troll  :xD


Título: Re: dar la vuelta elementos de una lista
Publicado por: dato000 en 11 Julio 2013, 01:53 am
La función reverse existe:
http://www.cplusplus.com/reference/list/list/reverse/

Pero ha quedado muy troll  :xD

que raro, no me aparecio esa funcion en google, y paueky no la nombra, no paras de asombrarme, pero sigue siendo muy troll  :silbar: :silbar: