All pastes #2050959 Raw Edit

Unnamed

public text v1 · immutable
#2050959 ·published 2011-04-26 18:39 UTC
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;

	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;
				}
				
			}
		}
	}
}