Código C++:
Ver original
#include <iostream> #include <new> using namespace std; template< class T > class PILA_DATOS{ template< class t > friend class PILA; private: T nodo; PILA_DATOS< T > *ptrPilaSiguiente; }; template< class T > class PILA{ friend ostream &operator<< <T>( ostream &, const PILA< T > & ); public: PILA(); PILA< T > &empujarPila ( const T& ); PILA< T > &sacarPila (); private: PILA_DATOS< T > *ptrPila; bool estaVacia (); }; template< class T > PILA< T >::PILA (){ ptrPila = NULL; } template< class T > bool PILA< T >::estaVacia (){ return ( ptrPila == NULL ? true : false ); } template< class T > PILA< T > &PILA< T >::empujarPila ( const T &a ){ if ( estaVacia () ){ ptrPila = new PILA_DATOS< T >; ptrPila->nodo = a; ptrPila->ptrPilaSiguiente = NULL; } else{ PILA_DATOS< T > *nuevaPila; nuevaPila= new PILA_DATOS< T >; nuevaPila->nodo = a; nuevaPila->ptrPilaSiguiente = ptrPila; ptrPila = nuevaPila; } return *this; } template< class T > PILA< T > &PILA< T >::sacarPila (){ PILA_DATOS< T > *temp; temp = ptrPila; ptrPila = ptrPila->ptrPilaSiguiente; delete temp; return *this; } template< class T > ostream &operator<<( ostream &salida, const PILA< T > &pila ){ PILA_DATOS< T > *a = pila.ptrPila; while ( a != NULL ){ salida << a->nodo << "->"; a = a->ptrPilaSiguiente; } salida << "NULL\n"; return salida; } int main (){ PILA< int > a; a.empujarPila (2).empujarPila (3).empujarPila(23).empujarPila (25); cout << a; a.sacarPila().sacarPila(); cout << a; return 0; }
Muchas gracias!