Mercurial > Algorithms__Sedgewick
annotate algs4-c++/src/Stack.hpp @ 7:a5052f77ba7e
Removed uneeded resize() method from Stack definition.
author | Eris Caffee <discordia@eldalin.com> |
---|---|
date | Fri, 29 May 2015 20:57:21 -0500 |
parents | 438f5608900e |
children | 0f99a5ae6cd4 |
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@6 | 11 public: |
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@6 | 21 //////////////////////////////////// |
discordia@6 | 22 class iterator; |
discordia@6 | 23 friend class iterator; |
discordia@6 | 24 class iterator { |
discordia@6 | 25 |
discordia@6 | 26 public: |
discordia@6 | 27 |
discordia@6 | 28 iterator( Node *c ); |
discordia@6 | 29 |
discordia@6 | 30 iterator& operator++(); |
discordia@6 | 31 iterator operator++(int); |
discordia@6 | 32 |
discordia@6 | 33 T operator*(); |
discordia@6 | 34 bool operator!=( typename Stack<T>::iterator ); |
discordia@6 | 35 |
discordia@6 | 36 private: |
discordia@6 | 37 |
discordia@6 | 38 Node *curr; |
discordia@6 | 39 }; |
discordia@6 | 40 |
discordia@6 | 41 //////////////////////////////////// |
discordia@6 | 42 |
discordia@6 | 43 Stack( void ); |
discordia@6 | 44 ~Stack( void ); |
discordia@6 | 45 |
discordia@6 | 46 void push( T &item ); |
discordia@6 | 47 T pop( void ); |
discordia@6 | 48 |
discordia@6 | 49 bool is_empty( void ); |
discordia@6 | 50 size_t size( void ); |
discordia@6 | 51 |
discordia@6 | 52 iterator begin( void ); |
discordia@6 | 53 iterator end( void ); |
discordia@6 | 54 |
discordia@6 | 55 private: |
discordia@6 | 56 |
discordia@6 | 57 size_t N; |
discordia@6 | 58 Node *list; |
discordia@6 | 59 |
discordia@6 | 60 }; |
discordia@6 | 61 |
discordia@6 | 62 |
discordia@6 | 63 |
discordia@6 | 64 #endif |
discordia@6 | 65 |