Aleph-w  1.5a.2
Biblioteca general de algoritmos y estructuras de datos
 Todo Clases Archivos Funciones Variables 'typedefs' Enumeraciones Amigas Grupos Páginas
tpl_listStack.H
1 
2 # ifndef TPL_LISTSTACK_H
3 # define TPL_LISTSTACK_H
4 
5 # include <htlist.H>
6 # include <tpl_snode.H>
7 
8 using namespace Aleph;
9 
10 namespace Aleph {
11 
24  template <typename T>
25 class ListStack : public Snode<T>
26 {
27  size_t num_nodes;
28 
29 public:
30 
32  typedef Snode<T> Node;
33 
35  ListStack() : num_nodes(0) {}
36 
43  void push(Node * node)
44  {
45  ++num_nodes;
46  this->insert_next(node);
47  }
48 
56  Node * pop() throw(std::exception, std::underflow_error)
57  {
58  if (this->is_empty())
59  throw std::underflow_error ("Stack underflow");
60 
61  --num_nodes;
62 
63  return this->remove_next();
64  }
65 
73  Node * top()
74  {
75  if (this->is_empty())
76  throw std::underflow_error ("Stack underflow");
77 
78  return static_cast<Node*>(this->get_next());
79  }
80 
82  bool is_empty() const { return Snode<T>::is_empty(); }
83 
85  const size_t & size() const { return num_nodes; }
86 };
87 
88 } // end namespace Aleph
89 
90 # endif /* TPL_LISTSTACK_H */
91 
Definition: tpl_listStack.H:25
Snode * remove_next()
Definition: tpl_snode.H:48
const size_t & size() const
Retorna la cantidad de elementos que tiene la pila.
Definition: tpl_listStack.H:85
void push(Node *node)
Definition: tpl_listStack.H:43
Definition: tpl_snode.H:22
bool is_empty() const
Retorna true si la pila está vacía.
Definition: tpl_listStack.H:82
Snode *& get_next()
Retorna el nodo siguiente a this.
Definition: tpl_snode.H:51
ListStack()
Constructor.
Definition: tpl_listStack.H:35
Node * pop()
Definition: tpl_listStack.H:56
Snode< T > Node
Nodo de una pila de nodos.
Definition: tpl_listStack.H:32
Node * top()
Definition: tpl_listStack.H:73

Leandro Rabindranath León