#include "List.h" List::List(Data *ptr) { this->next = 0; this->ptr = ptr; } List::List(Data *data, List *next) { this->next = next; this->ptr = data; } List::List(List *old) { if (old->next) this->next = new List(old->next); } List::~List() { if (this->ptr) delete this->ptr; if (this->next) delete this->next; } void List::append(List *next) { next->next = this->next; this->next = next; } void List::setData(Data *ptr) { this->ptr = ptr; } #ifdef TESTING #include class SubData : public Data { public: SubData(char ch) {this->data = ch;} SubData(SubData *old) { this->data = old->data; } char data; }; class SubList : public List { public: SubList(SubList *); SubList(SubData *); SubData *ptr; SubList *next; SubList *prev; }; SubList::SubList(SubList *old) { if (old->next) this->next = new SubList(old->next); if (old->ptr) this->ptr = new SubData(old->ptr); } using namespace std; int main() { SubList *test, *iterator; test = new SubList(new SubData('a')); for (int i = 0;i < 10;i++) { test->append(new SubList(new SubData('b' + i))); } do cout << iterator->ptr->data; while (iterator = iterator->next); delete test; return 0; } #endif