// Copy Constructor \\ SLLIntStorage::SLLIntStorage(SLLIntStorage &a) { clock_t begin=clock(); _Head = new Node(); _Head = a._Head; _Tail = new Node(); _Tail = a._Tail; Node *curr = a._Head; do { CreateNode(curr->data()); curr = curr->Next(); } while(curr->Next() != NULL); clock_t end=clock(); cTimer t; cout << "Copy Constructor - Done: Time taken: " << double(t.diffclock(end,begin)) << " MilliSeconds." << endl; } // Create Node \\ void SLLIntStorage::CreateNode(int Data) { Node* newNode = new Node(); newNode->SetData(Data); newNode->SetNext(NULL); Node *tmp = _Head; if(_sortRead == false) { if ( tmp != NULL ) { while ( tmp->Next() != NULL ) { tmp = tmp->Next(); } tmp->SetNext(newNode); } else { _Head = newNode; } _Tail = newNode; } else { if(_Head == NULL) { _Head = newNode; _Tail = newNode; return; } if(newNode->data() <= _Head->data()) { newNode->SetNext(_Head); _Head = newNode; return; } if(_Tail->data() <= newNode->data()) // Larger or equal to last item { _Tail->SetNext(newNode); _Tail = newNode; return; } else { Node *prv; while ( tmp->Next() != NULL ) { if(tmp->data() <= newNode->data() ) { prv = tmp; tmp = tmp->Next(); } else { newNode->SetNext(prv->Next()); prv->SetNext(newNode); return; } } } } }