View Single Post
Re: Show off your finest piece of code!
Old
  (#14)
dub
Member
 
dub's Avatar
 
Status: Offline
Posts: 89
Join Date: Aug 2004
Location: UK
Default Re: Show off your finest piece of code! - 30-12-2004

here`s my 2cents a nice little cpp doubly linked list class

Code:
 CLinkedList *pLL = NULL;
 
 static bool	bStart = TRUE;
 
 CLinkedList::~CLinkedList( )
 {
 	delete (pLL);
 	pLL = NULL;
 	bStart = TRUE;
 }
 
 void CLinkedList::SetToStartNode ( )
 {
 	while (pLL->prev != NULL)
 		pLL = pLL->prev;
 }
 
 void CLinkedList::SetToEndNode ( )
 {
 	while (pLL->next != NULL)
 		pLL = pLL->next;
 }
 
 long CLinkedList::GetNumberOfNodes ( )
 {
 	long lNumberOfNodes;
 
 	pLL->SetToStartNode ();
 
 	lNumberOfNodes = 0;
 
 	while (pLL->next != NULL)
 	{
 		pLL = pLL->next;
 		lNumberOfNodes++;
 	}
 
 	return (lNumberOfNodes);
 }
 
 void CLinkedList::DeleteAllNodes ( )
 {
 	pLL->SetToEndNode ();
 
 	while (pLL->prev != NULL)
 	{
 		pLL = pLL->prev;
 		delete (pLL->next);
 		pLL->next = NULL;
 	}
 
 	bStart = TRUE;
 	return;
 }
 
 void CLinkedList::AddNode (int iData)
 {
 	CLinkedList *pNewNode;
 
 	if (bStart)
 	{
 		bStart = FALSE;
 		pLL->iData = iData;
 		pLL->prev = NULL;
 		pLL->next = NULL;
 	}
 	else
 	{
 		pLL->SetToEndNode ();
 		pNewNode = new (CLinkedList);
 		pLL->next = pNewNode;
 		pNewNode->prev = pLL;
 		pNewNode->iData = pLL->iData;
 		pNewNode->next = NULL;
 		pLL = pNewNode;
 	}
 }
 
 void CLinkedList::DeleteNode ( )
 {
 	CLinkedList *pNode = NULL;
 
 	if (pLL->next != NULL)
 		pNode = pLL->next;
 	else if (pLL->prev != NULL)
 		pNode = pLL->prev;
 	else // dont delete the start node
 		return;
 
 	pLL->prev->next = pLL->next;
 	pLL->next->prev = pLL->prev;
 
 	pLL = pNode;
 	return;
 }
 
 void CLinkedList::GoToNextNode ( )
 {
 	if (pLL->next != NULL)
 		pLL = pLL->next;
 }
 
 void CLinkedList::GoToPreviousNode ( )
 {
 	if (pLL->prev != NULL)
 		pLL = pLL->prev;
 }
 
 bool CLinkedList::IsNextNodeNull ( )
 {
 	if (pLL->next != NULL)
 		return FALSE;
 	return TRUE;
 }
 
 bool CLinkedList::IsPrevNodeNull ( )
 {
 	if (pLL->prev != NULL)
 		return FALSE;
 	return TRUE;
 }
 
 int CLinkedList::GetVar ( )
 {
 	return (pLL->iData);
 }
 
 
 class CLinkedList
 {
 	int			iData;
 	CLinkedList *prev;
 	CLinkedList *next;
 
 public:
 	// Class Construction
 	CLinkedList ( ) :  prev(NULL), next(NULL) , iData(0)
 	{
 	}
 	// Class Destruction
 	virtual		~CLinkedList ( );
 	// Class Function Prototypes...
 	void		AddNode (int fData);
 	void		DeleteNode ( );
 	void		DeleteAllNodes ( );
 	void		SetToStartNode ( );
 	void		SetToEndNode ( );
 	long		GetNumberOfNodes ( );
 	void		GoToNextNode ( );
 	void		GoToPreviousNode ( );
 	bool		IsNextNodeNull ( );
 	bool		IsPrevNodeNull ( );
 	int			GetVar ( );
 };
 extern CLinkedList *pLL;
enjoy Dubb.
  
Reply With Quote