Excelente, esto aclara mi duda, muchas gracias.<div><br></div><div>Saludos.<br><br><div class="gmail_quote">2011/4/29 Steven Davidson <span dir="ltr"><<a href="mailto:srd4121@njit.edu">srd4121@njit.edu</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hola Miguel,<div><div></div><div class="h5"><br>
<br>
On 4/29/2011 2:10 AM, Miguel Eduardo Román Martínez wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Buena noche compañeros, estoy haciendo unos ejemplos de estructuras y<br>
me sucedió algo curioso:<br>
<br>
y es que tengo un codigo algo como esto:<br>
<br>
cout << "Ultimo valor ingresado: " << ultimoNodo->valor << endl;<br>
//imprime el valor que ingreso<br>
cout << "Desea ingresar otro numero? (s, n) ";<br>
cin >> respuesta;<br>
cout << "Otra vez el ultimo valor ingresado: " << ultimoNodo->valor <<<br>
endl; //imprime la direccion de memoria.<br>
<br>
Como veran en el comentario el primer cout muesta el valor correcto<br>
pero el segundo muestra otro valor, a pesar de que la instruccion es<br>
exactamente la misma.<br>
<br>
Adjunto el codigo fuente completo por si lo quieren analizar.<br>
<br>
Seria excelente si alguien me pudiera ayudar a resolver este curioso<br>
fenomeno :)<br>
<br>
de ante mano muchas gracias.<br>
<br>
</blockquote>
<br></div></div>
El error está en el uso del puntero 'ultimoNodo' en la función 'push()'. Escribes:<br>
<br>
void push( int nuevoValor )<br>
{<br>
  Nodo nuevoNodo = Nodo();  // No es necesario escribir: = Nodo()<br>
  nuevoNodo.valor = nuevoValor;<br>
<br>
  if( isEmpthy() )<br>
    nuevoNodo.anterior = NULL;<br>
  else<br>
    nuevoNodo.anterior = ultimoNodo;<br>
<br>
  ultimoNodo = &nuevoNodo;  // Error lógico<br>
}<br>
<br>
La variable 'nuevoNodo' existe localmente. Esto significa que se creará automáticamente al invocar esta función 'push()' y se destruirá automáticamente al terminar esta función y retornar a su punto de invocación.<br>


<br>
Esto implica que 'ultimoNodo' apunta a "basura". Has tenido suerte que tu programa haya podido ejecutar sin problemas, aunque has descubierto que hay un problema con el valor accedido. Típicamente, un puntero que apunta a basura termina por acceder a memoria que no es suya y provoca un error en tiempo de ejecución con un mensaje al estilo de "violación de segmentación" o "acceso denegado".<br>


<br>
Lo que estás intentando hacer es crear una lista enlazada, pero necesitas que sea dinámicamente enlazada. Esto significa que necesitas usar memoria dinámica. Puedes consultar nuestro curso de EDD en nuestra página. Puedes ir directamente a: <a href="http://c.conclase.net/edd/index.php" target="_blank">http://c.conclase.net/edd/index.php</a><br>


<br>
<br>
Espero que esto te aclare la duda.<br>
<br>
Steven<br>
<br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net" target="_blank">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br></div>