annotate 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
rev   line source
discordia@8 1 #ifndef QUEUE_HPP
discordia@8 2 #define QUEUE_HPP
discordia@8 3
discordia@8 4 #include <cstddef>
discordia@8 5
discordia@8 6 // Linked list based queue after Sedgewick and Wayne, Algorithms 4th ed, Algorithm 1.3
discordia@8 7
discordia@8 8 template <typename T>
discordia@8 9 class Queue {
discordia@8 10
discordia@8 11 public:
discordia@8 12
discordia@8 13 ////////////////////////////////////
discordia@8 14 class Node {
discordia@8 15 public:
discordia@8 16 T item;
discordia@8 17 Node *next;
discordia@8 18 };
discordia@8 19
discordia@8 20
discordia@8 21 ////////////////////////////////////
discordia@8 22 class iterator;
discordia@8 23 friend class iterator;
discordia@8 24 class iterator {
discordia@8 25
discordia@8 26 public:
discordia@8 27
discordia@8 28 iterator( Node *c );
discordia@8 29
discordia@8 30 iterator& operator++();
discordia@8 31 iterator operator++(int);
discordia@8 32
discordia@8 33 T operator*();
discordia@8 34 bool operator!=( typename Queue<T>::iterator );
discordia@8 35
discordia@8 36 private:
discordia@8 37
discordia@8 38 Node *curr;
discordia@8 39 };
discordia@8 40
discordia@8 41 ////////////////////////////////////
discordia@8 42
discordia@8 43 Queue( void );
discordia@8 44 ~Queue( void );
discordia@8 45
discordia@8 46 void enqueue( T &item );
discordia@8 47 T dequeue( void );
discordia@8 48
discordia@8 49 bool is_empty( void );
discordia@8 50 size_t size( void );
discordia@8 51
discordia@8 52 iterator begin( void );
discordia@8 53 iterator end( void );
discordia@8 54
discordia@8 55 private:
discordia@8 56
discordia@8 57 size_t N;
discordia@8 58 Node *first;
discordia@8 59 Node *last;
discordia@8 60
discordia@8 61 };
discordia@8 62
discordia@8 63
discordia@8 64
discordia@8 65 #endif
discordia@8 66