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