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