Retroceder   Foros del Web > Temas generales de computación > Programación > C/C++

Respuesta
 
Herramientas Desplegado
Antiguo 15-abr-2008, 07:57   #1 (permalink)
JocDev está en el buen camino
 
Fecha de Ingreso: noviembre-2004
Mensajes: 139
Triste 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
__________________
Vote x
http://www.spymac.com/bianquita/uploads
JocDev está desconectado   Responder Citando
Antiguo 15-abr-2008, 08:21   #2 (permalink)
Leber ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 31
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.
Leber está desconectado   Responder Citando
Antiguo 15-abr-2008, 15:43   #3 (permalink)
JocDev está en el buen camino
 
Fecha de Ingreso: noviembre-2004
Mensajes: 139
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??
__________________
Vote x
http://www.spymac.com/bianquita/uploads
JocDev está desconectado   Responder Citando
Antiguo 17-abr-2008, 19:52   #4 (permalink)
ernestobalestrini ha deshabilitado el karma
 
Avatar de ernestobalestrini
 
Fecha de Ingreso: marzo-2007
Mensajes: 112
Enviar un mensaje por MSN a ernestobalestrini
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
__________________
Diseño y programacion web http://servidorcdp.com.ve
ernestobalestrini está desconectado   Responder Citando
Antiguo 19-abr-2008, 14:33   #5 (permalink)
fran_tatengue ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 10
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.
fran_tatengue está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 07:20.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93