#include "linkedlist.h" template LinkedList::LinkedList() { head = new ListNode(); tail = new ListNode(); tail->prev = head; head->next = tail; head->prev = NULL; tail->next = NULL; } template void LinkedList::add(const T &data) { ListNode *n = new ListNode(); tail->prev->next = n; n->prev = tail->prev; tail->prev = n; n->next = tail; n->data = data; } template bool LinkedList::isEmpty() { return (head->next == tail); } template void LinkedList::remove(Iterator &i) { ListNode *n = i.current; i.next(); n->prev->next = n->next; n->next->prev = n->prev; delete n; } int main(int argc, char *argv[]) { LinkedList l; for (unsigned int i=0; i<10; i++) { l.add(i); } LinkedList::Iterator i(l); while (i.isValid()) { std::cout<::Iterator j(l); while (j.isValid()) { std::cout<