Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. //класс узла
  2. template <class T>
  3. class DNode {
  4. public:
  5.     //конструктор для создания узла
  6.     DNode(const T &e = T(), DNode *n = NULL, DNode *p = NULL) : element(e), next(n), previous(p) {}
  7.     ~DNode() {}
  8.     T element;
  9.     DNode *next;
  10.     DNode *previous;
  11.      
  12. };
  13.  
  14. template <class T>
  15. class DList {
  16. private:
  17.     DNode<T> *head;
  18.     DNode<T> *tail;
  19. public:
  20.     DList() {
  21.         head = new DNode<T>();
  22.         tail = new DNode<T>();
  23.     }
  24.     ~DList() {
  25.         clear();
  26.         delete head;
  27.         delete tail;
  28.     }
  29. // проверяет список на пустоту
  30.  bool isEmpty() { return (head->next == NULL); }
  31. //добавление перед текущей позицией (в начало  списка)
  32. void insertFirst(T &e) {
  33.         if (isEmpty()) {
  34.             DNode<T> *newNode = new DNode<T>(e);
  35.             head->next = newNode;
  36.             tail->previous = newNode;
  37.         }
  38.         else {
  39.             DNode<T> *actualFirst = head->next;
  40.             DNode<T> *newNode = new DNode<T>(e, actualFirst);
  41.             actualFirst->previous = newNode;
  42.             head->next = newNode;
  43.         }
  44.     }
  45. //освобождение списка
  46. void clear() {
  47.         int counter = 0;
  48.         while (tail->previous!=NULL) {
  49.             DNode<T> *remove = tail->previous;
  50.             tail->previous = remove->previous;
  51.             delete remove;
  52.             counter++;
  53.         }
  54.         std::cout << "Released " << counter << " nodes from memory" << std::endl;
  55.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement