// L-11 MCS 360 Fri 17 Sep 2010 : mcs360_list.h

/* In this file we give a definition of a linked list,
   defining the namespace "mcs360list". */

#ifndef MCS360_LIST_H
#define MCS360_LIST_H

#define NULL 0

namespace mcs360_list
{
   template <typename T>
   class List
   {
      private:

         struct Node
         {
            T data;  // T is template parameter
            Node *next; // pointer to next node
 
            Node(const T& item, Node* ptr = NULL) :
               data(item), next(ptr) {}
         };

         Node *first;
         Node *last;

   public:

      List();
      List(T item);
      void append(T item);
      void write();
      bool member(T item);
      void erase(T item);
   };
}
#include "mcs360_list.tc"
#endif

