el problema es que al pop tendrias que pasarle un void **value y donde se asigna su valor, poner *value = top_node->value. esto se da porque estas pasando el puntero por valor, lo cambias dentro de la funcion, pero al salir de la funcion el valor se pierde.
hay otra cuestion mas sutil que es que en tu stack estas guardando punteros a enteros que estan almacenados... en el stack. aca no te causa problemas porque la misma funcion (el main) en la que pusheas haces el pop, pero por ejemplo si llamaras a una funcion que apila los valores y despues llamas a otra que los desapila seguramente vas a obtener un feo error. esto es asi porque al salir de la primer funcion el stack donde se guardaban las variables locales (los int) pasa a ser memoria de nadie, que se reutiliza cada vez que llamas a otra funcion. por ende, cuando desapiles tus valores, seguramente va a haber _otra_ cosa (si es que tenes suerte y no se cuelga antes). lo que tendrias que hacer es reservar memoria con malloc() para los ints y guardar esos punteros para finalmente liberar con free() cuando los desapilas. saludos _______________________________________________ Lista de correo Programacion. [email protected] http://listas.fi.uba.ar/mailman/listinfo/programacion
