comparison algs4-c++/src/Stack.hpp @ 6:438f5608900e

Linked list based Stack class.
author Eris Caffee <discordia@eldalin.com>
date Fri, 29 May 2015 20:52:18 -0500
parents
children a5052f77ba7e
comparison
equal deleted inserted replaced
-1:000000000000 0:2c8998d51afa
1 #ifndef STACK_HPP
2 #define STACK_HPP
3
4 #include <cstddef>
5
6 // Linked list based stack after Sedgewick and Wayne, Algorithms 4th ed, Algorithm 1.2
7
8 template <typename T>
9 class Stack {
10
11 public:
12
13 ////////////////////////////////////
14 class Node {
15 public:
16 T item;
17 Node *next;
18 };
19
20
21 ////////////////////////////////////
22 class iterator;
23 friend class iterator;
24 class iterator {
25
26 public:
27
28 iterator( Node *c );
29
30 iterator& operator++();
31 iterator operator++(int);
32
33 T operator*();
34 bool operator!=( typename Stack<T>::iterator );
35
36 private:
37
38 Node *curr;
39 };
40
41 ////////////////////////////////////
42
43 Stack( void );
44 ~Stack( void );
45
46 void push( T &item );
47 T pop( void );
48
49 bool is_empty( void );
50 size_t size( void );
51
52 iterator begin( void );
53 iterator end( void );
54
55 private:
56
57 size_t N;
58 Node *list;
59
60 void resize( size_t new_max );
61 };
62
63
64
65 #endif
66