#ifndef CLASSLIST_H
#define CLASSLIST_H
template <class T> class List
{
    struct Element
    {
        T data;
        Element *next;        // указатель на следующий элемент списка
    };

  public :
	Element *pHead;           // указатель на первый элемент списка
    Element *pPrev;           // указатель на последний элемент списка
    int countElem; 

    List();    //конструктор по умочанию

	List(const List &list); //конструктор копирования

    ~List(); //деструктор

    void addToHead(T data); //добавение в начао

	void addToEnd(T data);  //добавение в конец

	void addToPosition(T data, int position); //в заданную позицию

	void delFirst(); //удаение первого

	void delLast(); //удаение поседнего

	void delPosition(int position); //удаение заданного

	void print(); //вывод на экран

    bool IsEmpty(); //проверка на существование

	int search(T key); //поиск по ключу

	void sort(); // сортировка

	int menu(); //Меню

	T PrintToFound(int key); //Вывод найденного элемента

	};
#endif 
