Advertisement
Guest User

Untitled

a guest
Dec 16th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.68 KB | None | 0 0
  1. class node_1 // Это вроде бы элемент списка
  2. {
  3.     int name, count; // name - это номер элемента из графа, count - количество предшественников
  4.     node_1 *next; // это поле - указатель на следующий элемент в списке
  5.     node_2 *trailer; // это - указатель на трейлер (который вниз уходит)
  6. public:
  7.     node_1() // конструктор по умолчанию, здесь все просто, задаем все поля нулевыми
  8.     {
  9.         name = 0;
  10.         count = 0;
  11.         next = NULL;
  12.         trailer = NULL;
  13.     }
  14.     node_1(int _n) // конструктор с параметром, здесь мы задаем только имя, то есть номер элеманта графа, остальное нули
  15.     {
  16.         name = _n;
  17.         count = 0;
  18.         next = NULL;
  19.         trailer = NULL;
  20.     }
  21.     ~node_1() // деструктор
  22.     {
  23.         delete next;
  24.         delete trailer;
  25.     }
  26.     node_1 operator++() // Здесь мы добавляем количество предшественников
  27.     {
  28.         count++;
  29.         return *this;
  30.     }
  31.     int GetName() // возвращает номер элемента в графе
  32.     {
  33.         return name;
  34.     }
  35.     node_1 *GetNext() // возвращает адрес на последователя
  36.     {
  37.         return next;
  38.     }
  39. };
  40. class node_2 // Вроде бы это трейлер (элемент трейлера)
  41. {
  42.     node_1 *ld; // указатель на последователя элемента, от которого идет этот трейлер
  43.     node_2 *next; // указатель на следущий трейлер этого же элемента
  44. public:
  45.     node_2() //конструктор по умолчанию, все поля заполняем нулями
  46.     {
  47.         next = NULL;
  48.         ld = NULL;
  49.     }
  50.     node_2(node_1 *_ld) //конструктор с параметром, передаем элемент, к которому будет относится этот трейлер (элемент, от которого трейлер пойдет вниз)
  51.     {
  52.         ld = _ld;
  53.         next = NULL;
  54.     }
  55.     node_1 GetLeader() // возврашает элемент, от которого идет этот трейлер
  56.     {
  57.         return *ld;
  58.     }
  59. };
  60. class leader // Элемент списка
  61. {
  62.     node_1 *First; //Указатель на голову
  63. public:
  64.     leader() //конструктор по умолчанию
  65.     {
  66.         First = new node_1;
  67.     }
  68.     ~leader() //деструктор, удаляем элементы по порядку в цикле, чтобы ничего не улетело вникуда
  69.     {
  70.         node_1 *s = First->GetNext();
  71.         while (s)
  72.         {
  73.             node_1 *s_2 = s;
  74.             s = s->GetNext();
  75.             delete s_2;
  76.         }
  77.     }
  78.     node_1 *GetTail() //Не совсем понял, но вроде бы это возвращает указатель на последний элемент (возможно еще это указатель на элемент после крайнего
  79.     {
  80.         node_1 *s_1 = First->GetNext();
  81.         while (s_1->GetNext())
  82.             s_1 = s_1->GetNext();
  83.         return s_1;
  84.     }
  85.     leader operator+(int n) //Ну, это добавление элемента в список лидеров, здесь все просто
  86.     {
  87.         node_1 *s = GetTail(); //Просто создаем элемент, который будет хвостом
  88.         s_2(n);     // создаем элемент, n - номер элемента в графе
  89.         s->GetNext() = s_2; // указываем, что этот элемент - новый хвост
  90.         return *this; // возвращаем указатель на голову
  91.     }
  92.  
  93. };
  94. int _tmain(int argc, _TCHAR* argv[])
  95. {
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement