//---------------------------------------------------------------------------
// 
#ifndef Unit2H
#define Unit2H
 
template<class T> class Node;

template<class T>
class List
{
public:
	 
	List(T &v);
	List(const List&);
	~List();

	void Add_to_top(const T &v);
	void Add_at_bottom(const T &v);
        void Display();
	void Remove(T &v);

	T& operator[](int index)const;
     
private:
	Node<T> *first;
};
 
template<class T>
class Node
{
	friend class List<T>;

	public:

		Node(const T &v);
 
	private:
		T Data;
		Node<T> *next;
};



//---------------------------------------------------------------------------
#endif