[C con Clase] Implementar una pila

Steven Davidson steven en conclase.net
Sab Jun 23 00:42:39 CEST 2007


Hola Pamela,

El pasado 2007-06-22 03:51:37, Pato escribió:

P> hola!! como les dije, estoy aprendiendo y para eso escribi el
P> siguiente encabezado para una pila de personas. Me gustaria saber si
P> tiene sentido que yo misma haga la siguiente implementacion cuando se
P> podria utilizar la STL no? (no conozco mucho la STL). o sea, podria
P> utilizar la STL o conocen alguna otra librería que me provea las
P> siguientes operaciones?

Si sólo te interesa usar pilas, sin mayores preocupaciones, entonces sí, aconsejo usar las STL. Por ejemplo,

#include <stack>
...
int main()
{
  stack< int > pilaInt;

  pilaInt.push( 10 );
  pilaInt.push( 15 );
  pilaInt.push( -23 );
  pilaInt.push( 49 );
  pilaInt.push( 81 );

  pilaInt.top() = -81;  // Modificamos el primer elemento

  cout << "Cantidad total = " << pilaInt.size() << endl;
  while( !pilaInt.empty() )
  {
    cout << pilaInt.top() << ' ';
    pilaInt.pop();
  }
  cout << endl;

  vector< float > listaFloat;
  listaFloat.push_back( 10.6 );  // Parecido a una pila
  listaFloat.push_back( 15.e-3 );
  listaFloat.push_back( -23.00938e106 );

  // Creamos una pila a partir de un "vector"
  stack< float, vector<float> > pilaFloat( listaFloat );

  // Incluso una pila de pilas
  stack< stack< float, vector<float> > > pilaPilaFloat;
  pilaPilaFloat.push( pilaFloat );

  return 0;
}

Las funciones miembros son bastante simples:
empty()
pop()
push()
size()
top()

También existen varios operadores relacionales para objetos de tipo 'stack<>'.

Seguramente, puedes encontrar documentación acerca de ésta y otras plantillas estándares de ANSI C++ en internet. Por ejemplo,
http://www.cppreference.com/cppstack/index.html
http://www.roguewave.com/support/docs/sourcepro/edition9/html/stdlibref/stack-h.html

Si por otro lado quieres algún otro comportamiento que la definición estánar de la pila no tiene, entonces podrías implementar tu propia clase.


Espero que esto te sirva.

Steven


Más información sobre la lista de distribución Cconclase