Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //класс узла
- template <class T>
- class DNode {
- public:
- //конструктор для создания узла
- DNode(const T &e = T(), DNode *n = NULL, DNode *p = NULL) : element(e), next(n), previous(p) {}
- ~DNode() {}
- T element;
- DNode *next;
- DNode *previous;
- };
- template <class T>
- class DList {
- private:
- DNode<T> *head;
- DNode<T> *tail;
- public:
- DList() {
- head = new DNode<T>();
- tail = new DNode<T>();
- }
- ~DList() {
- clear();
- delete head;
- delete tail;
- }
- // проверяет список на пустоту
- bool isEmpty() { return (head->next == NULL); }
- //добавление перед текущей позицией (в начало списка)
- void insertFirst(T &e) {
- if (isEmpty()) {
- DNode<T> *newNode = new DNode<T>(e);
- head->next = newNode;
- tail->previous = newNode;
- }
- else {
- DNode<T> *actualFirst = head->next;
- DNode<T> *newNode = new DNode<T>(e, actualFirst);
- actualFirst->previous = newNode;
- head->next = newNode;
- }
- }
- //освобождение списка
- void clear() {
- int counter = 0;
- while (tail->previous!=NULL) {
- DNode<T> *remove = tail->previous;
- tail->previous = remove->previous;
- delete remove;
- counter++;
- }
- std::cout << "Released " << counter << " nodes from memory" << std::endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement