bool del( T *);
ListNode < T > *remove( T * );
bool isEmpty() const;
+ #ifdef DEBUGMODE
void print() const;
+ #endif
+ void deleteNodes();
+
ListNode < T > *Find( T * );
ListNode < T > *First() { return firstPtr; };
ListNode < T > *Last() { return lastPtr; };
List<T>::List() : firstPtr (0), lastPtr (0) {}
template <class T>
-List<T>::~List()
+void List<T>::deleteNodes()
{
- if (!isEmpty())
+ if (isEmpty())
+ return;
+ ListNode<T> *it = firstPtr, *tempPtr;
+ while (it)
{
- #ifdef DEBUGMODE
- log("Destroying Nodes");
- #endif
-
- ListNode<T> *currentPtr = firstPtr, *tempPtr;
-
- while (currentPtr)
- {
- tempPtr = currentPtr;
- currentPtr = currentPtr->Next();
-
- #ifdef DEBUGMODE
- log("Deleting Memory address: %s", tempPtr->getData());
- #endif
-
- delete tempPtr;
- }
- #ifdef DEBUGMODE
- log("All Nodes destroyed");
- #endif
+ tempPtr = it;
+ it = it->Next();
+ delete tempPtr;
}
+ firstPtr = NULL;
+ lastPtr = NULL;
+}
+
+template <class T>
+List<T>::~List()
+{
+ deleteNodes();
}
template<class T>
currentPtr = firstPtr;
while (currentPtr)
{
+ /*
cout << "aClient: " << *currentPtr->getData() << flush;
if (currentPtr->getData()->stats)
cout << " Player Name: " << currentPtr->getData()->stats->name
<< " Password: " << currentPtr->getData()->stats->password << flush;
cout << endl;
+ */
+ cout << currentPtr->getData()->getString() << endl;
currentPtr = currentPtr->next;
}
}