elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Imprimir una lista enlazada de forma ascendente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Imprimir una lista enlazada de forma ascendente  (Leído 4,213 veces)
maunk

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Imprimir una lista enlazada de forma ascendente
« en: 1 Febrero 2014, 22:08 pm »

El algoritmo recorre la lista, pero empieza a imprimir del mayor hacia atrás, se olvida de los números que hay antes, por ejemplo, el input 1 3 2 5 4 lo resuelve devolviendo 5 3 1, como ven se olvida del 4 y del 2, si el número mayor estuviera en la última posición, se olvidaría de todos. Cabe rescatar que la inserción de elementos en la lista se hace al inicio. Adjunto el método, gracias!

string listaSimple::Historial1(){
   stringstream salida;
   nodo *aux=new nodo();
   nodo * aux2=new nodo();
   for(this->nodoActual=this->nodoPrimero;this->nodoActual!=NULL;this->nodoActual=this->nodoActual->getSigNodo()){
    for(aux=this->nodoActual->getSigNodo();aux!=NULL;aux=aux->getSigNodo()){
       if(this->nodoActual->getGanados() < aux->getGanados()){
          aux2=this->nodoActual;
          this->nodoActual=aux;
          aux=aux2;
         }
    }
    salida<<this->nodoActual->toString();    
   }
   return salida.str();
}


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Imprimir una lista enlazada de forma ascendente
« Respuesta #1 en: 3 Febrero 2014, 09:29 am »

Lo primero, etiqueta el código con las etiquetas GeSHi para que sea legible... o encierra el código entre las etiquetas [code = cpp] y [/ code] (sin espacios).

En segundo lugar... ahí solo se ve cómo se imprime la lista... entonces estás asumiendo que tu lista esta bien creada?? me parece una apuesta un tanto arriesgada.

Tercero, this->nodoActual qué sentido tiene?? su uso es totalmente local, al menos en esta función, por lo que no debería ser una variable miembro.

Cuarto, entiendo que estás intentando usar una especie de algoritmo de burbuja para ordenar los resultados... lo que pasa es que tú no pretendes ordenar la lista, solo los resultados.

fíjate en las siguientes líneas de tu código:

Código
  1. for( ..; .. ;this->nodoActual=this->nodoActual->getSigNodo() ){
  2.    // ...
  3.    this->nodoActual=aux;
  4.    // ...
  5.    }
  6.  }
  7. }


Ahí te estás saltando los primeros nodos hasta llegar al mayor de ellos.

Deberías plantearte el crear una lista de resultados y ordenar dichos resultados con este algoritmo en vez de intentar ordenar sobre la marcha.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con lista enlazada
Programación C/C++
Lain0x 2 3,427 Último mensaje 8 Julio 2011, 13:20 pm
por Valkyr
Ayuda con lista enlazada
Java
netca 2 3,181 Último mensaje 20 Abril 2012, 16:11 pm
por adwind
Ayuda Lista Enlazada
Programación C/C++
robluis 5 5,436 Último mensaje 9 Mayo 2012, 03:49 am
por botella
Ayuda please! Ordenar numero de forma ascendente
Programación C/C++
bryanrz96 1 1,973 Último mensaje 13 Noviembre 2015, 22:19 pm
por 0xFer
Se puede imprimir lista simplemente enlazada al reves
Programación C/C++
dacima99 4 8,393 Último mensaje 22 Marzo 2018, 23:25 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines