sclist.h
Code:
#ifndef SCLIST_H
#define SCLIST_H

#include "slnode.h"

template<class T>
class sclist
{
    public:
        //default constructor
        sclist();
        
        //deconstructor
        ~sclist();
        
        //inserts a node at the head of the list
        void InsertAtHead(const T&);

        //inserts a node at the tail of the list
        void InsertAtTail(const T&);
        
        //returns a pointer to the node removed 
        //from the head of the list	
        slnode<T>* RemoveFromHead();
        
        //returns a pointer to the node removed 
        //from the tail of the list
        slnode<T>* RemoveFromTail();
        
        //true if the list is empty, otherwise false
        bool IsEmpty();
        
        //moves headPtr one node forward in the list
        void Advance();
        
        //returns a pointer to the first node in the list
        //starting from the head of the list, that contains
        //the indicated data. If the data is not in the list, 
        //returns NULL.
        slnode<T>* Locate(T data);
	
    private:
        T* headPtr;
        int size;
};
#include "sclist.template"

#endif