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

Funcion Insertar en Lista

Estas en el tema de Funcion Insertar en Lista en el foro de C/C++ en Foros del Web. Hola visto este codigo para insertar nodos ordenadamente en una lista cerrada void Insertar (Lista *lista, int v) { pNodo nuevo, anterior; nuevo = new ...
  #1 (permalink)  
Antiguo 15/04/2008, 07:57
 
Fecha de Ingreso: noviembre-2004
Ubicación: Asuncion - Paraguay
Mensajes: 155
Antigüedad: 19 años, 6 meses
Puntos: 0
Funcion Insertar en Lista

Hola visto este codigo para insertar nodos ordenadamente en una lista cerrada
void Insertar (Lista *lista, int v)
{
pNodo nuevo, anterior;
nuevo = new tipoNodo;
nuevo->valor = v;
if(ListaVacia(*lista) || (*lista)->valor > v)
{
nuevo->siguiente = *lista; //nuevo->siguiente= lo q apunta lista.
*lista = nuevo; //aca cambias el valor de lista.
}
else
{
anterior = *lista; //anterior = lo q apunta lista.
//Aca esta mi duda que condicion se cumple en anterior->siguiente
while(anterior->siguiente && anterior->siguiente->valor <= v)
{
anterior = anterior->siguiente;
}
nuevo->siguiente = anterior->siguiente;
anterior->siguiente = nuevo;
}
}

Mi duda es en el while. Que condicion se cumple en la siguiente linea?
while(anterior->siguiente && ...
Una se que es que verifica que el valor del nodo sea menor igual al valor enviado
pero con anterior->siguiente que?? Gracias
  #2 (permalink)  
Antiguo 15/04/2008, 08:21
 
Fecha de Ingreso: marzo-2008
Mensajes: 37
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Funcion Insertar en Lista

Al ser una condicion AND, y al evaluarse de izquierda a derecha, si la primera condicion ya no se cumple, ya no se evalua la siguiente, por eso primero si mira si anterior->siguiente no apunta a NULL, si la condicion estuviera al reves no funcionaria.
  #3 (permalink)  
Antiguo 15/04/2008, 15:43
 
Fecha de Ingreso: noviembre-2004
Ubicación: Asuncion - Paraguay
Mensajes: 155
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Funcion Insertar en Lista

Ahh entiendo ahora entonces esto no corresponde a una lista cerrada porque uno de los nodos apunta a null verdad??
  #4 (permalink)  
Antiguo 17/04/2008, 19:52
 
Fecha de Ingreso: marzo-2007
Mensajes: 129
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Funcion Insertar en Lista

Cita:
Iniciado por JocDev Ver Mensaje
Ahh entiendo ahora entonces esto no corresponde a una lista cerrada porque uno de los nodos apunta a null verdad??
Si el ultimo nodo o elemento de la lista apunta a vacio o null esto quiere decir que tu lista es Simple

nodo1 -> nodo2 -> nodo3 -> nodon ->NULL
__________________
Software Analyst and developer
http://ebalestrini.com
  #5 (permalink)  
Antiguo 19/04/2008, 14:33
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Funcion Insertar en Lista

Yo lo que haria es hacer lo siguiente

/*...
.
.
.

while(anterior->siguiente != NULL....
.
.
.
...*/

nada mas que para mi es mucho mas claro y legible y ademas no se si "anterior->siguiente" puesto antes del "&&" cuasa efecto porque creo que tenes que tener mas cuidadado, "anterior->siguiente" es un puntero que apunta a una direccion de memoria, eso puede ser un entero que esta haciendo fallar la condicion, en cambio haciendo "while(anterior->siguiente != NULL...." obtenes un valor booleano que es lo que necesita una condicion and teoricamente.
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 05:40.