Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Lista ordenada simple

Estas en el tema de Lista ordenada simple en el foro de C/C++ en Foros del Web. Chicos tengo un problema, estaba haciendo una lista pero no me la ordena bien con los valores: 2,4,3,6,1 y me muestra 1, 2, 4 ,3, ...
  #1 (permalink)  
Antiguo 13/05/2014, 08:51
 
Fecha de Ingreso: marzo-2014
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 10 años, 1 mes
Puntos: 0
Lista ordenada simple

Chicos tengo un problema, estaba haciendo una lista pero no me la ordena bien con los valores: 2,4,3,6,1
y me muestra 1, 2, 4 ,3, 6

aca les dejo el codigo

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct enlazar{
  5.     int letra;
  6.     enlazar *siguiente;
  7. };
  8.  
  9. int main(){
  10.     enlazar *primero = NULL, *ultimo = NULL, *nuevo, *auxiliar,*auxiliar2;
  11.     int n;
  12.     cin >> n;
  13.    
  14.     while(n != 0){
  15.         nuevo = new enlazar;
  16.         nuevo->letra = n;
  17.         nuevo->siguiente = NULL;
  18.        
  19.         if(primero == NULL){
  20.             primero = nuevo;
  21.             ultimo = nuevo;
  22.         }
  23.         else if(nuevo->letra < primero->letra){
  24.             auxiliar = primero;
  25.             primero = nuevo;
  26.             primero->siguiente = auxiliar;
  27.         }
  28.         else{
  29.             auxiliar = primero;
  30.             while(nuevo->letra < auxiliar->letra){
  31.                     ultimo->siguiente = nuevo;
  32.                     nuevo->siguiente = auxiliar;
  33.                     auxiliar = auxiliar->siguiente;
  34.             }
  35.             ultimo->siguiente = nuevo;
  36.             ultimo = nuevo;
  37.         }
  38.         cin >> n;
  39.     }
  40.    
  41.  
  42.     auxiliar = primero;
  43.     while(auxiliar != NULL){
  44.         cout << auxiliar->letra << " ";
  45.         auxiliar = auxiliar->siguiente;
  46.     }
  47.     return 0;
  48. }
  #2 (permalink)  
Antiguo 13/05/2014, 11:32
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Lista ordenada simple

Cual es la diferencia entre la linea 23 y la combinacion de lineas (29 + 30)?
Para mi estas chequeando exactamente lo mismo, el ciclo de la linea 30 nunca se ejecuta, por tanto siempre insertas al final (lineas 35 y 36), excepto cuando el nuevo es menor que el primero, que se inserta al inicio.

Si yo fuera el programa que muestras y me ingresas esto: 2,4,3,6,1, diria

2: lista vacia, al inicio
4: mayor que 2, insertar al final lista: 2->4
3: mayor que 2, insertar al final lista: 2->4->3
6: mayor que 2, insertar al final lista: 2->4->3->6
1: menor que 2, insertar al inicio lista: 1->2->4->3->6
__________________
Visita mi perfil en LinkedIn
  #3 (permalink)  
Antiguo 14/05/2014, 16:55
 
Fecha de Ingreso: marzo-2014
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Lista ordenada simple

Si tienes razón, me volvere a plantear como hacerlo

Etiquetas: int, lista, ordenada, simple
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:09.