rendered paste body\\ 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;
int counter = 0;
do
{
CreateNode(curr->data());
curr = curr->Next();
counter++;
}
while(counter < 10000);
clock_t end=clock();
cTimer t;
cout << "Copy Constructor - Done: Time taken: " << double(t.diffclock(end,begin)) << " MilliSeconds." << endl;
}
\\ CreateNode //
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;
}
}
}
}
}