view algs4-c++/src/Stack.hpp @ 9:0f99a5ae6cd4

Made the Node inner class private.
author Eris Caffee <discordia@eldalin.com>
date Fri, 29 May 2015 21:34:18 -0500
parents a5052f77ba7e
children 8af1a61be7c1
line source
1 #ifndef STACK_HPP
2 #define STACK_HPP
4 #include <cstddef>
6 // Linked list based stack after Sedgewick and Wayne, Algorithms 4th ed, Algorithm 1.2
8 template <typename T>
9 class Stack {
11 private:
13 ////////////////////////////////////
14 class Node {
15 public:
16 T item;
17 Node *next;
18 };
21 public:
23 ////////////////////////////////////
24 class iterator;
25 friend class iterator;
26 class iterator {
28 public:
30 iterator( Node *c );
32 iterator& operator++();
33 iterator operator++(int);
35 T operator*();
36 bool operator!=( typename Stack<T>::iterator );
38 private:
40 Node *curr;
41 };
43 ////////////////////////////////////
45 Stack( void );
46 ~Stack( void );
48 void push( T &item );
49 T pop( void );
51 bool is_empty( void );
52 size_t size( void );
54 iterator begin( void );
55 iterator end( void );
57 private:
59 size_t N;
60 Node *list;
62 };
66 #endif