Título: como elimino el ultimo nodo de que ingrese( pila c++ ) Publicado por: jorgecotrinax en 30 Septiembre 2019, 02:12 am como elimino los últimos datos que ingrese, he visto muchos foros pero solo me los elimina del primero al ultimo y yo quiero del ultimo al primero
Código: #include<iostream> Título: Re: COMO ELIMINO EL ULTIMO NODO DE QUE INGRESE( pila C++ ) Publicado por: K-YreX en 30 Septiembre 2019, 15:33 pm No tiene mucho sentido ya que la gracia de usar una Pila es insertar al principio en O(1) y eliminar del principio en O(1). Si insertas y eliminas por el final, las operaciones pasarán de ser O(1) a O(n)... pero si es lo que quieres, me limito a darte una opción.
Creas un nodo auxiliar que empezando en <cabeza> vaya avanzando hasta que <aux->siguiente> sea igual a <cola>. Entonces eliminas <cola> e igualas <cola> a <aux>. Cuidado con lo de "hasta que <aux->siguiente> sea igual a <cola>" ya que puedes tener dos elementos iguales pero que no sean el mismo. Tendrás que comprobarlo con sus direcciones de memoria. Otra forma que se parecería un poco más a la estructura de una pila (aunque poco) es tener una función que devuelva el número de elementos de la pila. El típico <size()> del contenedor <stack> de la STL. Entonces lo mismo, avanzas con un puntero auxiliar hasta uno menos del último y haces lo mismo de antes. PD: Tal y como quieres usarlo sería mejor usar listas doblemente enlazadas, en las que cada nodo tiene un puntero a siguiente y otro a anterior. La gracia de estas es trabajar con inserciones y borrados en ambos extremos en O(1). Así sólo tendrías que empezar en <cola>, crear un puntero auxiliar que apunte también a <cola>, hacer que <cola> apunte al anterior y borrar el auxiliar. Título: Re: COMO ELIMINO EL ULTIMO NODO DE QUE INGRESE( pila C++ ) Publicado por: jorgecotrinax en 30 Septiembre 2019, 16:09 pm ok muchísimas gracias ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
|