Advertisement
Savelyev_Vyacheslav

С++ все про списки односвязные списки v3

Jan 4th, 2021
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 18.43 KB | None | 0 0
  1. https://youtu.be/aBidgQ0xZSk
  2.  
  3. #include <iostream>
  4. #include <string>
  5. using namespace std;
  6. class Node
  7. {
  8.     string FirstName;
  9.     //string LastName;
  10.     //string MiddleName;
  11.     class Node *ptr;
  12.     friend class List;
  13. };
  14.  
  15. class List
  16. {
  17.     Node *head;
  18.     int count = 0;
  19.     Node* Prev(Node *); // Переход к предыдущему узлу (не интерфейсный метод)
  20. public:
  21.     List() { head = NULL; } // Инициализация списка
  22.     int getCount() { return count; } // Получение количества узлов списка
  23.     bool isEmpty() { return head == NULL; }  // Проверка, пуст ли список
  24.     string getValue(Node* p) { return p->FirstName; } // Получение значения узла списка
  25.     //string getValue2(Node* p) { return p->LastName; } // Получение значения 2го узла списка
  26.     //string getValue3(Node* p) { return p->MiddleName; } // Получение значения 2го узла списка
  27.     void setValue(Node *p, int val) { p->FirstName = val; } // Установка значения узла списка
  28.     Node* getFirst() { return head; } // Получение корневого узла списка
  29.     Node* getLast();            // Получение последнего узла списка
  30.     void Clear();               // Очистка списка
  31.     Node* Next(Node *);         // Переход к следующему узлу
  32.     Node* Add(string, /*string, string,*/  Node*); // Добавление узла списка
  33.     Node* Delete(Node*);        // Удаление узла списка
  34.     void Print();               // Вывод значений узлов списка
  35.     void Swap(Node*, Node*);    // Взаимообмен двух узлов
  36.  
  37.     Node* Nomer_s_kontsa_del(); // удален середина по номеру
  38.     Node* Zamena(); // замена
  39.     Node* Zamena_ptr(); // замена по указателю
  40.     Node* HeadToEnd(); // замена местами по указателю первый назад последний вперед
  41.     Node* FILO(); // первый назад
  42.     Node* LIFO(); // последний вперед
  43.     void StekOperation(); // DZ po AIP
  44.  
  45.     Node* Dobav_n_last(string); // добавить в конец
  46.     Node* Dobav_pre_last(); // добавить перед конец
  47.     Node* Dobav_head(string); // добавить перед конец
  48.     Node* Dobav_head_next(); // добавить перед конец
  49.  
  50.     Node* head_del(); // udalit golovu
  51.     Node* head_next_del(); // udalit 2 s golovu
  52.     Node* Delete_end(); // удаляет конец
  53.     Node* Delete_prev_end(); // удален предпоследний
  54.  
  55.     Node* By_value_del(); // udalit po znacheniu
  56. };
  57.  
  58. Node* List::Add(string num,// string num2, string num3,
  59.     Node* node = NULL)
  60. {
  61.     Node *elem = new Node();
  62.     elem->FirstName = num;
  63.     //elem->LastName = num2;
  64.     //->MiddleName = num3;
  65.     count++;
  66.     if (node == NULL) // Добавление нового корня
  67.     {
  68.         if (head == NULL) {
  69.             elem->ptr = NULL;
  70.             head = elem;
  71.         }
  72.         else {
  73.             elem->ptr = head;
  74.             head = elem;
  75.         }
  76.         return elem;
  77.     }
  78.     elem->ptr = node->ptr; // Добавление узла после текущего
  79.     node->ptr = elem;
  80.     return elem;
  81. }
  82.  
  83. Node* List::Delete(Node* node)
  84. {
  85.     if (node == NULL) { return NULL; } // В списке нет узлов
  86.     count--;
  87.     if (node == head)   // Удаление корневого узла
  88.     {
  89.         head = node->ptr;
  90.         delete node;
  91.         return head;
  92.     }
  93.     Node* prev = Prev(node); // Удаление промежуточного узла
  94.     prev->ptr = node->ptr;
  95.     delete node;
  96.     return prev;
  97. }
  98. ////////////////
  99. Node* List::Delete_end()
  100. {
  101.     Node *temp = NULL;
  102.     Node *head2 = head;
  103.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  104.     count--;
  105.     while (head2->ptr != NULL) {  // перемотка на последние указатели
  106.         temp = head2;
  107.         head2 = head2->ptr;
  108.     }
  109.     if (temp) {
  110.         //<udalenie poslednego>
  111.         temp->ptr = NULL;
  112.         delete head2;
  113.         //< /udalenie poslednego>
  114.     }
  115.     cout << temp->FirstName  <<" - " << temp << " - " << temp->ptr << endl;
  116. }
  117. ////////////////
  118. ////////////////
  119. Node* List::Dobav_head(string value = "ADD-TEST")
  120. {
  121.     Node *temp = NULL;
  122.     Node *head2 = head;
  123.     //Node *uzel = head;
  124.     //cout << "add to head: ";
  125.     cin >> value;
  126.     //<opation>
  127.     Node *elem2 = new Node();
  128.     elem2->FirstName = value;
  129.     elem2->ptr = head2;
  130.     head = elem2;
  131.     //</opation>
  132.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  133.     count++;
  134. }
  135. ////////////////
  136. ////////////////
  137. Node* List::Dobav_head_next()
  138. {
  139.     Node *t1 = NULL;
  140.     Node *t2 = head;
  141.     t1 = head;
  142.     t2 = t2->ptr;
  143.     //<operation>
  144.     Node *elem2 = new Node();
  145.     elem2->FirstName = "88";
  146.     t1->ptr = elem2;
  147.     elem2->ptr = t2;
  148.     //<operation>
  149.     if (t2 == NULL) { return NULL; } // В списке нет узлов
  150.     count++;
  151. }
  152. ////////////////
  153. ////////////////
  154. Node* List::Dobav_n_last(string value = "88")
  155. {
  156.     Node *temp = NULL;
  157.     Node *head2 = head;
  158.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  159.     count++;
  160.     while (head2->ptr != NULL) {
  161.         temp = head2;
  162.         head2 = head2->ptr;
  163.     }
  164.     // <operation>
  165.     Node *elem2 = new Node();
  166.     elem2->FirstName = value;
  167.     elem2->ptr = NULL;
  168.     head2->ptr = elem2;
  169.     // </operation>
  170.     cout << head2->FirstName << " test " << head2 << " test " << endl;
  171.     cout << head2->ptr->FirstName << " test " << head2->ptr << " test " << endl;
  172. }
  173. ////////////////
  174. /////////////////
  175. Node* List::Dobav_pre_last()
  176. {  
  177.     Node *temp = NULL;
  178.     Node *t = head;
  179.     Node *head2 = head;
  180.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  181.     count--;
  182.     while (head2->ptr != NULL) {
  183.     head2 = head2->ptr;
  184.     t = t->ptr;
  185.         if (t->ptr->ptr == NULL) {
  186.         temp = t->ptr;
  187.         cout << t->FirstName << " test2 " << t << " test2 " << endl;
  188.         cout << temp->FirstName << " test2 " << temp->ptr << " test2 " << endl;
  189.         //<operation>
  190.         Node *elem2 = new Node();
  191.         elem2->FirstName = 88;
  192.         t->ptr = elem2;
  193.         elem2->ptr = temp;
  194.         //</operation>
  195.         return NULL;
  196.         }
  197.     }
  198. }
  199. ////////////////
  200. ////////////////
  201. Node* List::Delete_prev_end()
  202. {
  203.     count++;
  204.     Node *temp = NULL;
  205.     Node *head2 = head;
  206.     Node *t = head;
  207.     Node *t2 = head;
  208.     Node *t3 = head;
  209.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  210.     if (head2->ptr == NULL) { return NULL; } // В списке нет узлов по условию
  211.     if (head2->ptr->ptr == NULL) { return NULL; } // В списке нет узлов
  212.     count--;
  213.     int j = 0;
  214.     cout << head2->FirstName << " - " << head2 << " - " << endl;
  215.     while (head2->ptr != NULL) {j++;
  216.                 head2 = head2->ptr;
  217.                 temp = head2;
  218.                 t = temp->ptr;
  219.                 t3 = t->ptr;
  220.         cout << temp->FirstName << " - " << temp << " - " << endl;
  221.         cout << t->FirstName << " - " << t << " - " << endl;
  222.         cout << t3->FirstName << " - " << t3 << " - " << endl;
  223.    
  224.         if (head2->ptr->ptr->ptr == NULL) {
  225.             //// <operation>
  226.             temp->ptr = t3; delete t;
  227.             //// </operation>
  228.             cout << temp->FirstName << " Проверка " << temp << " - " << endl;
  229.             cout << temp->ptr->FirstName << " Проверка " << temp->ptr << " - " << endl;
  230.             cout << "temp->ptr->ptr->FirstName" << " Проверка " << temp->ptr->ptr << " - " << endl;
  231.             cout << "t3->ptr->FirstName" << " - " << t3->ptr << " - " << endl;
  232.             return NULL;
  233.         }
  234.     }
  235. }
  236. ///////////////////
  237. ////////////////
  238. Node* List::Nomer_s_kontsa_del()
  239. {
  240.     count++;
  241.     Node *temp = NULL;
  242.     Node *head2 = head;
  243.     Node *t = head;
  244.     Node *t2 = head;
  245.     Node *t3 = head;
  246.     Node *t4 = head;
  247.     int nomer_s_kontsa = 4;
  248.     if (head2 == NULL) { return NULL;  } // В списке нет узлов
  249.     count--;
  250.     int i = 0;
  251.     int vsego;
  252.     while (t2->ptr != NULL) {
  253.         t2 = t2->ptr;
  254.         i++;
  255.         vsego = i;
  256.     }
  257.     // proverka na sootvetstvie spisku
  258.     if ((vsego+1) <= nomer_s_kontsa) { cout << " Nomer ne sootvetstvuet spisku|" << nomer_s_kontsa << "- этого номера нет " << endl;   return NULL; }
  259.  
  260.     cout << " vsego  " << (vsego+1) << " - " << endl;
  261.     int j = 0;
  262.  
  263.     while (head2->ptr != NULL) {
  264.         if (j == (vsego - nomer_s_kontsa)) {
  265.                 temp = head2;
  266.                 t = temp ->ptr;
  267.                 t3 = t->ptr;
  268.                 //// <perenos ukazatelya udalenie>
  269.                 temp->ptr = t3; delete t;
  270.                 //// </ perenos ukazatelya udalenie>
  271.                 cout << j << " Проверка " << temp << " - " << endl;
  272.                 head2 = head2->ptr;
  273.         }
  274.         else {
  275.             head2 = head2->ptr;
  276.         }
  277.         j++;
  278.     }
  279. }
  280. ///////////////////
  281. ////////////////
  282. Node* List::By_value_del()
  283. {
  284.     Node *temp = NULL;
  285.     Node *head2 = head;
  286.     Node *t = head;
  287.     Node *t2 = head;
  288.     Node *t3 = head;
  289.     Node *t4 = head;
  290.     string value_del = "31";
  291.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  292.     count--;
  293.     int j = 0;
  294.     while (head2->ptr != NULL) {
  295.         temp = head2;
  296.         head2 = head2->ptr;
  297.         if (head2->FirstName == value_del) {
  298.             t = temp->ptr;
  299.             t3 = t->ptr;
  300.             //// <operation>
  301.             temp->ptr = t3; delete t;
  302.             //// </operation>
  303.             cout << j << " Проверка " << temp << " - " << endl;
  304.             break;
  305.         }
  306.         else { 
  307.         }
  308.         j++;
  309.     }
  310. }
  311. ///////////////////
  312. ////////////////
  313. Node* List::head_next_del()
  314. {
  315.     Node *t1 = NULL;
  316.     Node *head2 = head;
  317.     Node *t2 = head;
  318.     Node *t3 = head;
  319.     t1 = head;
  320.     t2 = t1->ptr;
  321.     t3 = t2->ptr;
  322.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  323.     // <ukazateli dlya operatsii>
  324.     cout << t1->FirstName << " - " << t1 << " - " << endl;
  325.     cout << t2->FirstName << " - " << t2 << " - " << endl;
  326.     cout << t3->FirstName << " - " << t3 << " - " << endl;
  327.     // </ukazateli dlya operatsii>
  328.     // <operation>
  329.     t1->ptr = t3;
  330.     t2->ptr = NULL;
  331.     delete t2;
  332.     // </operation>
  333.     // <proverka>
  334.     cout << head2->FirstName << " - " << head2 << " - " << endl;
  335.     cout << head2->ptr->FirstName << " - " << head2->ptr << " - " << endl;
  336.     cout << head2->ptr->ptr->FirstName << " - " << head2->ptr->ptr << " - " << endl;
  337.     // </proverka>
  338. }
  339. ////////////////
  340. ////////////////
  341. Node* List::head_del()
  342. {
  343.     Node *temp = NULL;
  344.     Node *head2 = head;
  345.     Node *t = head;
  346.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  347.     //<operation>
  348.     head = head2->ptr;
  349.     t = NULL;
  350.     delete t;
  351.     //</operation>
  352.     int i = 0;
  353.     while (head2->ptr != NULL) {
  354.         temp = head2;
  355.         head2 = head2->ptr;
  356.         cout << i << " t " << t << " t " << endl;
  357.         cout << i << " - " << temp << " - " << endl;
  358.         cout << i << " - " << head2->ptr << " - " << endl;
  359.         i++;
  360.     }
  361. }
  362. ////////////////
  363. ////////////////
  364. Node* List::Zamena_ptr()
  365. {
  366.     Node *temp = NULL;
  367.     Node *head2 = head;
  368.     Node *t = head;
  369.     Node *t2 = head;
  370.     Node *t3 = head;
  371.     Node *t4 = head;
  372.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  373.     int i = 0;
  374.     int n_zameny=5;
  375.         while (head2->ptr != NULL) {
  376.         t2 = head2;
  377.         head2 = head2->ptr;
  378.         if (i == (n_zameny-2)) {
  379.             temp = head2;
  380.             cout << " Замена " << n_zameny << endl;
  381.             head2 = head2->ptr;
  382.             t3 = temp->ptr;
  383.             // <vivod nuzhnih peremennih>
  384.             cout << t->FirstName << " - " << t << " - " << endl;
  385.             cout << t2->FirstName << " - " << t2 << " - " << endl;
  386.             cout << temp->FirstName << " - " << temp << " - " << endl;
  387.             cout << t3->FirstName << " - " << t3 << " - " << endl;
  388.             // </vivod nuzhnih peremennih>
  389.             // </ podstanovka>
  390.              t4 = t4->ptr;
  391.              t2->ptr = t; t->ptr = t3;
  392.              head = temp;
  393.              temp->ptr = t4;
  394.              // < podstanovka>
  395.              // < proverka>
  396.             cout << head->FirstName << " 1 " << head << " - " << endl;
  397.             cout << t2->FirstName << " n " << t2 << " - " << endl;
  398.             cout << t2->ptr->FirstName << " n+1 " << t2->ptr << " - " << endl;
  399.             cout << t3->FirstName << " n+2 " << t3 << " - " << endl;
  400.             // < proverka>
  401.         }
  402.         i++;
  403.     }  
  404. }
  405. ///////////////////
  406. ////////////////
  407. Node* List::HeadToEnd()
  408. {
  409.     Node *temp = NULL;
  410.     Node *head2 = head;
  411.     Node *t = head;
  412.     Node *t2 = head;
  413.     Node *t3 = head;
  414.     Node *t4 = head;
  415.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  416.     int i = 0;
  417.     int n_zameny = 10;
  418.     while (head2->ptr != NULL) {
  419.         head2 = head2->ptr;
  420.         t2 = head2;
  421.         if (t2->ptr->ptr->ptr == NULL) {
  422.             t2 = head2;
  423.             temp = t2->ptr;
  424.             cout << " Замена " << n_zameny << endl;
  425.             //head2 = head2->ptr;
  426.             t3 = temp->ptr;
  427.             // <vivod nuzhnih peremennih>
  428.             cout << t->FirstName << " - " << t << " - " << endl;
  429.             cout << t2->FirstName << " - " << t2 << " - " << endl;
  430.             cout << temp->FirstName << " - " << temp << " - " << endl;
  431.             cout << t3->FirstName << " - " << t3 << " - " << endl;
  432.             // </vivod nuzhnih peremennih>
  433.             // </ podstanovka>
  434.             t4 = t4->ptr;
  435.             head = t3;
  436.             t3->ptr = t4;
  437.             temp->ptr = t; t->ptr = NULL;
  438.             // < podstanovka>
  439.             return NULL;
  440.         }
  441.         i++;
  442.     }
  443. }
  444. ///////////////////
  445. ////////////////
  446. Node* List::LIFO()
  447. {
  448.     Node *temp = NULL;
  449.     Node *head2 = head;
  450.     Node *t = head;
  451.     Node *tt = head;
  452.     Node *t2 = head;
  453.     Node *t3 = head;
  454.     Node *t4 = head;
  455.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  456.     int i = 0;
  457.     int n_zameny = 10;
  458.  
  459.     while (head2->ptr != NULL) {
  460.             t2 = head2;
  461.             t4 = t2->ptr;
  462.        
  463.         if (t2->ptr->ptr == NULL) {
  464.             // <vivod nuzhnih peremennih>
  465.             cout << t2->FirstName << " -- " << t2 << " - " << endl;
  466.             cout << t4->FirstName << " -- " << t4 << " - " << endl;
  467.             // </vivod nuzhnih peremennih>
  468.             // </ podstanovka>
  469.             head = t4;
  470.             t4->ptr = t3;
  471.             t2->ptr = NULL;
  472.             // < podstanovka>
  473.             return NULL;
  474.         }
  475.         head2 = head2->ptr; t2 = t2->ptr;
  476.         i++;
  477.     }
  478.    
  479. }
  480. ///////////////////
  481. ////////////////
  482. Node* List::FILO()
  483. {
  484.     Node *temp = NULL;
  485.     Node *head2 = head;
  486.     Node *t = head;
  487.     Node *tt = head;
  488.     Node *t2 = head;
  489.     Node *t3 = head;
  490.     Node *t4 = head;
  491.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  492.     int i = 0;
  493.     while (head2->ptr != NULL) {
  494.         head2 = head2->ptr;
  495.         t2 = head2;
  496.         if (t2->ptr == NULL) {
  497.             t2 = head2;
  498.             temp = t2->ptr;
  499.             // <vivod nuzhnih peremennih>
  500.             //cout << t->FirstName << " -- " << t << " - " << endl;
  501.             //cout << t2->FirstName << " -- " << t2 << " - " << endl;
  502.             // </vivod nuzhnih peremennih>
  503.             // </ podstanovka>
  504.             t4 = t4->ptr;
  505.             head = t4;
  506.             t2->ptr = t;
  507.             t->ptr = NULL;
  508.             // < podstanovka>
  509.             return NULL;
  510.         }
  511.         i++;
  512.     }
  513.    
  514. }
  515. ///////////////////
  516. ////////////////
  517. Node* List::Zamena()
  518. {
  519.     Node *temp = NULL;
  520.     Node *head2 = head;
  521.     Node *t = head;
  522.     if (head2 == NULL) { return NULL; } // В списке нет узлов
  523.     int i = 0;
  524.     int n_zameny;
  525.     cout <<  " Введи номер замены " << endl;
  526.     cin >> n_zameny;
  527.    
  528.     while (head2->ptr != NULL) {
  529.         if (i == (n_zameny-1)) {
  530.             temp = head2;
  531.             cout << " Замена " << n_zameny << endl;
  532.         }
  533.         head2 = head2->ptr;
  534.         cout << i << " - " << t << " - " << endl;
  535.         cout << i << " - " << temp << " - " << endl;
  536.         cout << i << " - " << head2->ptr << " - " << endl;
  537.         i++;
  538.     }  
  539.     if (temp) {
  540.         string zamen1;
  541.         zamen1 = temp->FirstName;
  542.         temp->FirstName = t->FirstName; // вставляем значение первого в выбранный
  543.         t->FirstName = zamen1; // вставляем в первый значение выбранного
  544.     }
  545. }
  546. ///////////////////
  547. ////////////////
  548. void List::StekOperation()
  549. {
  550.     while (true)
  551.     {
  552.         int day;
  553.         cout << "Operation  Dobav_head-1 head_del-2 AddTail-3 DelTail-4 Print-5 Exit-6 \n";
  554.         cin >> day;
  555.         switch (day) {
  556.         case 1:
  557.             cout << "Dobav_head\n"; Dobav_head();
  558.             break;
  559.         case 2:
  560.             cout << "head_del\n"; head_del();
  561.             break;
  562.         case 3:
  563.             cout << "AddTail\n"; Dobav_head(); FILO();
  564.             break;
  565.         case 4:
  566.             cout << "DelTail\n";  LIFO(); head_del();
  567.             break;
  568.         case 5:
  569.             cout << "Print\n"; Print();
  570.             break;
  571.         case 6:
  572.             cout << "Exit\n"; goto tryAgain;
  573.             break;
  574.         }
  575.  
  576.     }
  577. tryAgain: // это лейбл
  578.     exit;
  579. }
  580. ///////////////////
  581. void List::Print()
  582. {
  583.     if (isEmpty()) { cout << "Список пуст" << endl; return; }
  584.     Node *p = head;
  585.     do {
  586.         cout<< "(" <<getValue(p)
  587.         //  << " "<< getValue2(p)
  588.         //  << " " << getValue3(p)
  589.             << ")\n";
  590.         p = Next(p);
  591.     } while (p != NULL);
  592.     cout << endl;
  593. }
  594.  
  595. void List::Clear()
  596. {
  597.     class Node *p = head;
  598.     if (p == NULL) return;
  599.     do {
  600.         Node *d = p;
  601.         p = Next(p);
  602.         delete d;
  603.     } while (p != NULL);
  604.     count = 0;
  605.     head = NULL;
  606. }
  607.  
  608. Node* List::getLast()
  609. {
  610.     Node* p = head;
  611.     while (Next(p) != NULL)
  612.         p = Next(p);
  613.     return p;
  614. }
  615.  
  616. Node* List::Next(Node* node)
  617. {
  618.     if (isEmpty()) return NULL;
  619.     return node->ptr;
  620. }
  621.  
  622. Node* List::Prev(Node* node)
  623. {
  624.     if (isEmpty()) return NULL;
  625.     if (node == head) return NULL;
  626.     Node *p = head;
  627.     while (p->ptr != node)
  628.         p = p->ptr;
  629.     return p;
  630. }
  631.  
  632. void List::Swap(Node* node1, Node* node2)
  633. {
  634.     if (node1 == NULL || node2 == NULL) return;
  635.     if (node1 == node2) return;
  636.     if (node2->ptr == node1)
  637.     {
  638.         Node *p = node1;
  639.         node1 = node2;
  640.         node2 = p;
  641.     }
  642.     Node *prev1 = Prev(node1);
  643.     Node *prev2 = Prev(node2);
  644.     Node *next1 = Next(node1);
  645.     Node *next2 = Next(node2);
  646.     if (next1 == node2)
  647.     {
  648.         if (prev1 != NULL)
  649.             prev1->ptr = node2;
  650.         else
  651.             head = node2;
  652.         node2->ptr = node1;
  653.         node1->ptr = next2;
  654.         return;
  655.     }
  656.     if (prev1 != NULL)
  657.         prev1->ptr = node2;
  658.     else
  659.         head = node2;
  660.     if (prev2 != NULL)
  661.         prev2->ptr = node1;
  662.     else
  663.         head = node1;
  664.     node2->ptr = next1;
  665.     node1->ptr = next2;
  666. }
  667.  
  668.  
  669.  
  670. int main()
  671. {
  672.     using std::string;
  673.     using std::cin;
  674.     using std::cout;
  675.     using std::getline;
  676.     system("chcp 1251");
  677.     system("cls");
  678.     List list;
  679.     list.Print();
  680.     Node *s = list.getLast();
  681.     for (int i = 0; i < 4; i++) {
  682.         string z;
  683.         //string z2;
  684.         //string z3;
  685.         cout << ">> FirstName  ";
  686.         cin >> z;
  687.         //cout << ">> LastName  ";
  688.         //cin >> z2;
  689.         //cout << ">> MiddleName  ";
  690.         //cin >> z3;
  691.         s = list.Add(z, //z2, z3,
  692.             s);
  693.     }
  694.     //list.Delete_end();
  695.     //list.Nomer_s_kontsa_del();
  696.     //list.By_value_del();
  697.     //list.Delete_prev_end();
  698.    
  699.     //list.Zamena();
  700.     //list.Zamena_ptr();
  701.     //list.head_next_del();
  702.     //list.Dobav_n_last();
  703.     //list.Dobav_pre_last();
  704.     //list.StekOperation();
  705.    
  706.  
  707.    
  708.     //list.Dobav_head_next();
  709.     //list.HeadToEnd();
  710. list.FILO();
  711. //list.LIFO();
  712.     //cout << "***********************" << endl;
  713.     //list.Print();
  714.     //cout << "Последний элемент: " << list.getValue(list.getLast()) << endl;
  715.     // Удаляем элементы, равные 0
  716.     //Node *p = list.getFirst();
  717.     //do {
  718.     //  if (list.getValue(p) == "0")
  719.     //      p = list.Delete(p);
  720.     //  else
  721.     //      p = list.Next(p);
  722.     //} while (p != NULL);
  723.     //list.Print();
  724.     //cout << "В списке " << list.getCount() << " элементов" << endl;
  725.     //list.Swap(list.getFirst(), list.getLast());
  726.     list.Print();
  727.     //list.Clear();
  728.     //list.Print();
  729.     //cout << "В списке " << list.getCount() << " элементов" << endl;
  730.     //cin.get(); cin.get();
  731.  
  732.     return 0;
  733.  
  734. }
  735.  
  736.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement