view algs4-c++/src/Queue.hpp @ 8:b02533162b6e

Linked list based Queue class.
author Eris Caffee <discordia@eldalin.com>
date Fri, 29 May 2015 21:13:32 -0500
parents
children 0f99a5ae6cd4
line source
1 #ifndef QUEUE_HPP
2 #define QUEUE_HPP
4 #include <cstddef>
6 // Linked list based queue after Sedgewick and Wayne, Algorithms 4th ed, Algorithm 1.3
8 template <typename T>
9 class Queue {
11 public:
13 ////////////////////////////////////
14 class Node {
15 public:
16 T item;
17 Node *next;
18 };
21 ////////////////////////////////////
22 class iterator;
23 friend class iterator;
24 class iterator {
26 public:
28 iterator( Node *c );
30 iterator& operator++();
31 iterator operator++(int);
33 T operator*();
34 bool operator!=( typename Queue<T>::iterator );
36 private:
38 Node *curr;
39 };
41 ////////////////////////////////////
43 Queue( void );
44 ~Queue( void );
46 void enqueue( T &item );
47 T dequeue( void );
49 bool is_empty( void );
50 size_t size( void );
52 iterator begin( void );
53 iterator end( void );
55 private:
57 size_t N;
58 Node *first;
59 Node *last;
61 };
65 #endif