template struct Node { T value; Node *next, *prev; Node (T value) { this->value = value; next = prev = NULL; } Node() { next = prev = NULL; } }; template class LinkedList { private: Node *pFirst, *pLast; public: // Constructor LinkedList(); // Destructor ~LinkedList(); /* Adauga un nod cu valoarea == value la inceputul listei. */ void addFirst(T value); /* Adauga un nod cu valoarea == value la sfarsitul listei. */ void addLast(T value); /* Elimina elementul de la inceputul listei si intoarce valoarea acestuia. */ T removeFirst(); /* Elimina elementul de la sfarsitul listei listei si intoarce valoarea acestuia. */ T removeLast(); /* Elimina prima aparitie a elementului care are valoarea == value. */ T removeFirstOccurrence(T value); /* Elimina ultima aparitie a elementului care are valoarea == value. */ T removeLastOccurrence(T value); /* Afiseaza elementele listei pe o singura linie, separate printr-un spatiu. */ void printList(); /* Intoarce true daca lista este vida, false altfel. */ bool isEmpty(); }; #endif