
Untitled
By: a guest on
Jun 10th, 2012 | syntax:
C++ | size: 1.83 KB | hits: 24 | expires: Never
#ifndef LIST_H
#define LIST_H
template<typename T> struct Node {
T data;
Node<T> *next;
Node<T> *prev;
};
template<typename T> class List {
public:
List() : mFirst(0), mLast(0) {}
~List();
class iterator {
public:
iterator() : mIter(0) {}
~iterator() {}
void operator ++();
iterator & operator =(Node<T> * iter);
bool operator !=(Node<T> * iter);
T & operator *();
T * operator ->();
private:
Node<T> *mIter;
};
class const_iterator {
public:
const_iterator() : mIter(0) {}
~const_iterator() {}
void operator ++();
const_iterator & operator =(Node<T> * iter);
bool operator !=(Node<T> * iter);
T operator *();
private:
Node<T> *mIter;
};
class reverse_iterator {
public:
reverse_iterator() : mIter(0) {}
~reverse_iterator() {}
void operator ++();
reverse_iterator & operator =(Node<T> * iter);
bool operator !=(Node<T> * iter);
T operator *();
private:
Node<T> *mIter;
};
class const_reverse_iterator {
public:
const_reverse_iterator() : mIter(0) {}
~const_reverse_iterator() {}
void operator ++();
const_reverse_iterator & operator =(Node<T> * iter);
bool operator !=(Node<T> * iter);
T operator *();
private:
Node<T> *mIter;
};
Node<T> * begin();
Node<T> * end();
bool isEmpty();
void removeAll();
void insert(List<T>::iterator, T);
void pushBack(T data);
void pushFront(T data);
T popBack ();
T popFront();
List<T> & operator = (List &);
private:
Node<T> *mFirst;
Node<T> *mLast;
};
#endif