the problem with my code, well as far as i know its the functions "Print", "Print Reverse" and "PrintFrom".
the "Print" function prints the list in appending order, "Print Reverse" in reverse order, and "PrintFrom" is from a specific number, in this code , (62).
there are other problems too, if u can please help , i hate the crap right now
=====================
Code:
struct  NodeType;
struct NodeType
{
int component;
NodeType* link;
NodeType* backlink;
};

class ClosedList
{
public:
	bool IsEmpty() const;
	void Append(int item);
	int TotalCount();
	void Print() const;
	void PrintReverse() const;
	//void PrintFrom(int item) const;
	void Delete(int item);
	ClosedList();
	//~ClosedList();
	ClosedList(const ClosedList& otherList);
private:
	NodeType* head;
}; 
=====================

#include "closedlist.h" 
#include <iostream>
using namespace std;  
void main()
{
	ClosedList Scores;
	Scores.Append(92);
	Scores.Append(82);
	Scores.Append(62);
	Scores.Append(72);
	Scores.Append(99);

	cout <<"\nThe total count of the list is "<< Scores.TotalCount() <<endl;

	cout <<"\nThe list in the order of appending\n ";
	Scores.Print();

	cout <<"\nThe list in the reverse order of appending\n ";
	Scores.PrintReverse();

	cout <<"\nThe list in the order of appending starting from 62\n ";
	Scores.PrintFrom(62);

	cout <<"\nThe list after deleting 92:\n ";
	Scores.Delete(92);
	Scores.Print();

	cout <<"\nThe list after deleting 72:\n ";
	Scores.Delete(72);
	Scores.Print();

	ClosedList AnotherScores(Scores);
	cout <<"\nThe copied list: \n";
	AnotherScores.Print();
}
==========================
#include "ClosedList.h"
#include <iostream>
#include <cstddef>
using namespace std;

ClosedList::ClosedList()
{
	head = NULL;
}

ClosedList::ClosedList( const ClosedList& otherList )
{
	NodeType* fromPtr;
	NodeType* toPtr;

	if (otherList.head == NULL)
	{
		head = NULL;
		return;
	}
	fromPtr = otherList.head;
	head = new NodeType;
	head->component = fromPtr->component;

	toPtr = head;
	fromPtr = fromPtr->link;
	while (fromPtr != NULL)
	{
		toPtr->link = new NodeType;
		toPtr = toPtr->link;
		toPtr->component = fromPtr->component;
		fromPtr = fromPtr->link;
	}
	toPtr->link = NULL;
}

/*ClosedList::~ClosedList()
{
	int temp;

	while (!IsEmpty())
	PrintFrom(temp);
}*/

bool ClosedList::IsEmpty() const
{
	return (head == NULL);
}

void ClosedList::Print() const
{
	NodeType* currPtr = head;

	if(!IsEmpty())
	{
		do
		{
			cout << currPtr->component << "    ";
			currPtr = currPtr->link;
		}while (currPtr->link != head);
	}
	cout <<endl;

}

void ClosedList::PrintReverse() const
{ 
	NodeType* currPtr = head->backlink;

	if(!IsEmpty())
	{
		do
		{
			cout << currPtr->component << "    ";
			currPtr = currPtr->backlink;
		}while (currPtr->backlink != head);
	}
	cout <<endl;
}

void ClosedList::Append(int item)
{
	NodeType* newNodePtr = new NodeType;
	newNodePtr->component = item;
	if(IsEmpty())
	{
		head = newNodePtr;
		newNodePtr->link = head;
		newNodePtr->backlink = head;
	}
	else
	{

		newNodePtr->link = head;
		newNodePtr->backlink = head->backlink;
		head->backlink->link = newNodePtr;
		head->backlink = newNodePtr;
		head = newNodePtr;
	}
	//cout << head->component << "is appended\n";

}

void ClosedList::PrintFrom(int item) const
{
	NodeType* tempPtr = head;

	item = head->component;
	head = head->link;
	delete tempPtr;
	
}

void ClosedList::Delete(int item)
{
	NodeType* delPtr;
	NodeType* currPtr;

	if (item == head->component)
	{
		delPtr = head;
		head = head->link;
	}
	else
	{
		currPtr = head;
		while (currPtr->link->component != item)
		{
			currPtr = currPtr->link;
		}

		delPtr = currPtr->link;
		currPtr->link = currPtr->link->link;
	}
	delete delPtr;
}

ClosedList::TotalCount()
{
	NodeType* currPtr = head;
	int TotalCount = 0;

	do
	{
		TotalCount++;
		currPtr = currPtr->link;
	}while (currPtr != head);

	return TotalCount;
}
Tagged by Salem