All pastes #85500 Raw Edit

Miscellany

public text v1 · immutable
·published 2006-07-12 00:06 UTC
rendered paste body
void List::DeleteItem()
{
	Node * tempPtr = 0;
	
	if(pos == front)
	{
		front = front->next;
		delete pos;
		Reset();
	}
	else
	{
		tempPtr = front;
		while(tempPtr != NULL)
		{
			if(tempPtr->next == pos)
			{
				tempPtr->next=pos->next;
				delete pos;
				Reset();
				break;
			}
			else
			{
				tempPtr = tempPtr->next;
			}
		}
	}
}

void List::InsertInOrder(Node &v)
{
	if(front == 0)
	{
		AddAtFront(v);
		return;
	}
	else
	{
		Node vv;
		Node * oldPos = pos;
		Reset();
		while(!EndOfList())
		{
			GetNext(vv);
			if(v.CompareTo(vv) <= 0)
			{
				// we found where it goes
				InsertBefore(v);
				// cout << " b " << v.data << " ";
				pos = oldPos;
				return;
			}
		}
		// it is greater than all items in the list add at back
		AddAtRear(v);
		// cout << " r " << v.data << " ";
		pos = oldPos;
	}
}

void List::InsertBefore(Node &v)
{
	if(front == 0 || pos == 0 || pos == front)
	{
		AddAtFront(v);
	}
	else
	{
		Node * temp = FindNode(front, pos);
		if(temp == 0)
		{
			throw "bad return from FindNode in InsertBefore.";
		}
		Node * nPtr = new Node();
		nPtr->data = v.data;
		nPtr->data = pos;
		temp->next = nPtr;
	}
}

void List::Print()
{
	Node * temp = FindNode(front, 0);
	cout << "end value = " << temp->data << endl;
}