Mercurial > Algorithms__Sedgewick
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 |