annotate 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
rev   line source
discordia@6 1 #ifndef STACK_HPP
discordia@6 2 #define STACK_HPP
discordia@6 3
discordia@6 4 #include <cstddef>
discordia@6 5
discordia@6 6 // Linked list based stack after Sedgewick and Wayne, Algorithms 4th ed, Algorithm 1.2
discordia@6 7
discordia@6 8 template <typename T>
discordia@6 9 class Stack {
discordia@6 10
discordia@9 11 private:
discordia@6 12
discordia@6 13 ////////////////////////////////////
discordia@6 14 class Node {
discordia@6 15 public:
discordia@6 16 T item;
discordia@6 17 Node *next;
discordia@6 18 };
discordia@6 19
discordia@6 20
discordia@9 21 public:
discordia@9 22
discordia@6 23 ////////////////////////////////////
discordia@6 24 class iterator;
discordia@6 25 friend class iterator;
discordia@6 26 class iterator {
discordia@6 27
discordia@6 28 public:
discordia@6 29
discordia@6 30 iterator( Node *c );
discordia@6 31
discordia@6 32 iterator& operator++();
discordia@6 33 iterator operator++(int);
discordia@6 34
discordia@6 35 T operator*();
discordia@6 36 bool operator!=( typename Stack<T>::iterator );
discordia@6 37
discordia@6 38 private:
discordia@6 39
discordia@6 40 Node *curr;
discordia@6 41 };
discordia@6 42
discordia@6 43 ////////////////////////////////////
discordia@6 44
discordia@6 45 Stack( void );
discordia@6 46 ~Stack( void );
discordia@6 47
discordia@6 48 void push( T &item );
discordia@6 49 T pop( void );
discordia@6 50
discordia@6 51 bool is_empty( void );
discordia@6 52 size_t size( void );
discordia@6 53
discordia@6 54 iterator begin( void );
discordia@6 55 iterator end( void );
discordia@6 56
discordia@6 57 private:
discordia@6 58
discordia@6 59 size_t N;
discordia@6 60 Node *list;
discordia@6 61
discordia@6 62 };
discordia@6 63
discordia@6 64
discordia@6 65
discordia@6 66 #endif
discordia@6 67