Plantilla de clase Pila

¿Has encontrado un error? ¿Tienes la solución? Deja tu correción ;-)

Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por estudiante con únicamente conocimiento básico del lenguaje, no de programación.

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
#ifndef TPILA1_H
#define TPILA1_H
 
template< class T >
class Pila {public:
   Pila( int = 10 );    // constructor predeterminado (el tamaño de la pila es 10)
   ~Pila() { delete [] ptrPila; } // destructor
   bool push( const T& ); // coloca un elemento en la pila
   bool pop( T& );        // saca un elemento de la pilaprivate:
   int tamanio;             // # de elementos en la pila
   int cima;              // ubicación del elemento cima
   T *ptrPila;          // apuntador a la pila
    bool estaVacia() const { return cima == -1; }      // funciones de
   bool estaLlena() const { return cima == tamanio - 1; } // utilidad
}; // fin de la plantilla de clase Pila
 
// Constructor con un tamaño predeterminado de 10template< class T >
Pila< T >::Pila( int tam )
{
   tamanio = tam > 0 ? tam : 10;  
   cima = -1;               // La Pila inicialmente está vacía   ptrPila = new T[ tamanio ]; // asigna espacio para los elementos
} // fin del constructor Pila
 
// Coloca un elemento en la pila
// devuelve 1 si tiene éxito, de lo contrario devuelve 0 template< class T >
bool Pila< T >::push( const T &colocaValor )
{
   if ( !estaLlena() ) {
      ptrPila[ ++cima ] = colocaValor; // coloca el elemento en la Pila      return true;  // si la colocación fue exitosa
   } // end if
   return false;     // si la colocación no fue exitosa
} // fin de la plantilla de función push
 // Saca un elemento de la pila
template< class T > 
bool Pila< T >::pop( T &sacaValor )
{
   if ( !estaVacia() ) {      sacaValor = ptrPila[ cima-- ];  // saca el elemento de la Pila
      return true;  // si la eliminación fue exitosa
   } // end if
   return false;     // si la eliminación no fue exitosa
} // fin de la plantilla de función pop 
#endif

Punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:

  • Si es lenguaje C <code lang="c">Código en C</code>
  • Si es lenguaje Pascal <code lang="pascal">Aquí dentro el código de Pascal</code>.

De esta manera el código coloreas el código.

Deja un comentario

Suscribirse a los comentarios.