Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 10th, 2012  |  syntax: C++  |  size: 1.83 KB  |  hits: 24  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #ifndef LIST_H
  2. #define LIST_H
  3.  
  4. template<typename T> struct Node {
  5.     T data;
  6.     Node<T> *next;
  7.     Node<T> *prev;
  8. };
  9.  
  10. template<typename T> class List {
  11. public:
  12.     List() : mFirst(0), mLast(0) {}
  13.     ~List();
  14.  
  15.     class iterator {
  16.     public:
  17.         iterator() : mIter(0) {}
  18.         ~iterator() {}
  19.  
  20.         void operator ++();
  21.         iterator & operator =(Node<T> * iter);
  22.         bool operator !=(Node<T> * iter);
  23.         T & operator *();
  24.         T * operator ->();
  25.  
  26.     private:
  27.         Node<T> *mIter;
  28.     };
  29.  
  30.     class const_iterator {
  31.     public:
  32.         const_iterator() : mIter(0) {}
  33.         ~const_iterator() {}
  34.  
  35.         void operator ++();
  36.         const_iterator & operator =(Node<T> * iter);
  37.         bool operator !=(Node<T> * iter);
  38.         T operator *();
  39.  
  40.     private:
  41.         Node<T> *mIter;
  42.     };
  43.  
  44.     class reverse_iterator {
  45.     public:
  46.         reverse_iterator() : mIter(0) {}
  47.         ~reverse_iterator() {}
  48.  
  49.         void operator ++();
  50.         reverse_iterator & operator =(Node<T> * iter);
  51.         bool operator !=(Node<T> * iter);
  52.         T operator *();
  53.  
  54.     private:
  55.         Node<T> *mIter;
  56.     };
  57.  
  58.     class const_reverse_iterator {
  59.     public:
  60.         const_reverse_iterator() : mIter(0) {}
  61.         ~const_reverse_iterator() {}
  62.  
  63.         void operator ++();
  64.         const_reverse_iterator & operator =(Node<T> * iter);
  65.         bool operator !=(Node<T> * iter);
  66.         T operator *();
  67.  
  68.     private:
  69.         Node<T> *mIter;
  70.     };
  71.  
  72.     Node<T> * begin();
  73.     Node<T> * end();
  74.  
  75.     bool isEmpty();
  76.  
  77.     void removeAll();
  78.  
  79.     void insert(List<T>::iterator, T);
  80.     void pushBack(T data);
  81.     void pushFront(T data);
  82.  
  83.     T popBack ();
  84.     T popFront();
  85.  
  86.     List<T> & operator = (List &);
  87. private:
  88.     Node<T> *mFirst;
  89.     Node<T> *mLast;
  90. };
  91.  
  92. #endif