Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2022
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 24.01 KB | None | 0 0
  1. // laba_spiski.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. struct list
  8. {
  9.     int Data;
  10.     struct list* next;
  11.     struct list* prev;
  12. };
  13.  
  14. list* head = NULL; //корень списка
  15.  
  16.  
  17. struct list * init(int a)
  18. {
  19.     struct list* lst;
  20.     lst = (struct list*)malloc(sizeof(struct list));
  21.     lst->field = a;
  22.     lst->next = NULL;
  23.     lst->prev = NULL;
  24.     return(lst);
  25. }
  26.  
  27. struct list * additem(list *lst, int a)
  28. {
  29.     struct list *temp, *p;
  30.     temp = (struct list*)malloc(sizeof(list));
  31.     p = lst->next;
  32.     lst->next = temp;
  33.     temp->field = a;
  34.     temp->next = p;
  35.     temp->prev = lst;
  36.     if (p != NULL)
  37.         p->prev = temp;
  38.     return(temp);
  39. }
  40.  
  41. struct list* deleteitem(list* lst)
  42. {
  43.     struct list* prev, * next;
  44.     prev = lst->prev;
  45.     next = lst->next;
  46.     if (prev == NULL) // это корень
  47.     {
  48.         if (next != NULL)
  49.             next->prev = NULL;
  50.         prev = next;
  51.     }
  52.     else
  53.     {
  54.         prev->next = lst->next;
  55.         if (next != NULL)
  56.             next->prev = lst->prev;
  57.     }
  58.     free(lst);
  59.     return(prev);
  60. }
  61.  
  62. struct list * deletehead(list *root)
  63. {
  64.     struct list* temp;
  65.     temp = root->next;
  66.     if (temp != NULL)
  67.        temp->prev = NULL;
  68.     free(root);
  69.     return(temp);
  70. }
  71.  
  72. struct list * deleteList(list *root)
  73. {
  74.     struct list* prev = root;
  75.  
  76.     while (root!=NULL)
  77.     {
  78.         root = deletehead(root);
  79.     }
  80.     return(NULL);
  81. }
  82.  
  83. struct list* outList(struct list *root)
  84. {
  85.     struct list* p;
  86.     p = root;
  87.     if (p == NULL)
  88.     {
  89.         cout << "Список пуст";
  90.     }
  91.     else
  92.     {
  93.         do {
  94.             printf("%d ", p->field);
  95.             p = p->next;
  96.         } while (p != NULL);
  97.     }
  98.  
  99.     return(NULL);
  100. }
  101.  
  102. struct list* swap(struct list* root, struct list* l1, struct list* l2)
  103. {
  104.         struct list* left1, * left2, * right1, * right2;
  105.         left1 = l1->prev;
  106.         right1 = l1->next;
  107.         left2 = l2->prev;
  108.         right2 = l2->next;
  109.  
  110.         if (l2 == right1)
  111.         {
  112.             l2->next = l1;
  113.             l2->prev = left1;
  114.             l1->next = right2;
  115.             l1->prev = l2;
  116.             if (right2 != NULL)
  117.                 right2->prev = l1;
  118.             if (l1 != root)
  119.                 left1->next = l2;
  120.         }
  121.         else  if (l1 == right2)
  122.         {
  123.             l1->next = l2;
  124.             l1->prev = left2;
  125.             l2->next = right1;
  126.             l2->prev = l1;
  127.             if (right1 != NULL)
  128.                 right1->prev = l2;
  129.             if (l2 != head)
  130.                 left2->next = l1;
  131.         }
  132.         else
  133.         {
  134.             if (l1 != root)
  135.                 left1->next = l2;
  136.             l2->next = right1;
  137.             if (l2 != root)
  138.                 left2->next = l1;
  139.             l1->next = right2;
  140.             l2->prev = left1;
  141.             if (right2 != NULL)
  142.                 right2->prev = l1;
  143.             l1->prev = left2;
  144.             if (right1 != NULL)
  145.                 right1->prev = l2;
  146.         }
  147.         if (l1 == root)
  148.             return(l2);
  149.         if (l2 == root)
  150.             return(l1);
  151.         return(root);
  152.  
  153. }
  154.  
  155. struct list* swapTo1(struct list* head1,struct list* l2)
  156. {
  157.     struct list* left1, * left2, * right1, * right2;
  158.     left1 = head1->prev;
  159.     right1 = head1->next;
  160.  
  161.     left2 = l2->prev;
  162.     right2 = l2->next;
  163.  
  164.     if (l2 == right1)
  165.     {
  166.         l2->next = head1;
  167.         l2->prev = NULL;
  168.  
  169.         head1->next = right2;
  170.         head1->prev = l2;
  171.  
  172.         if (right2 != NULL)
  173.             right2->prev = head1;
  174.     }
  175.     else
  176.     {
  177.         l2->next = right1;
  178.         l2->prev = NULL;
  179.         if (right1 != NULL)
  180.             right1->prev = l2;
  181.  
  182.         head1->next = right2;
  183.         if (right2 != NULL)
  184.             right2->prev = head1;
  185.         head1->prev = left2;
  186.         if (left2 != NULL)
  187.             left2->next = head1;
  188.     }
  189.     return(l2); //возвращаем новый корень
  190. }
  191.  
  192.  
  193. void Z1(struct list *root)
  194. {
  195.     struct list* p = root;
  196.     struct list* min;
  197.    
  198.     cout << "\n Задача 1 \n";
  199.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  200.  
  201.     struct list* head1 = NULL;
  202.     struct list* el = NULL;
  203.     do {
  204.         if (head1 == NULL)
  205.         {
  206.             el = init(p->field);
  207.             head1 = el;
  208.         }
  209.         else el = additem(el, p->field);
  210.         p = p->next;
  211.     } while (p != NULL);
  212.     p = head1;
  213.     min = p;
  214.     //ищем миним элемент
  215.     do {
  216.         if (min->field > p->field)
  217.             min = p;
  218.         p = p->next;
  219.     } while (p != NULL);
  220.     //переставим его первым
  221.     head1= swapTo1(head1,min);
  222.     //выводим список на экран
  223.     outList(head1);
  224.     //
  225.     deleteList(head1);
  226. }
  227.  
  228. void Z2(struct list* root)
  229. {
  230.     struct list* head1, * head2, * el1, * el2;
  231.     struct list* p = root;
  232.     head1 = NULL;
  233.     head2 = NULL;
  234.     el1 = NULL;
  235.     el2 = NULL;
  236.     cout << "\n Задача 2 \n";
  237.     //разбиваем исходный список на 2
  238.     do {
  239.         if (p->field >= 0)
  240.         {
  241.             if (head1 == NULL)
  242.             {
  243.                 el1 = init(p->field);
  244.                 head1 = el1;
  245.             }
  246.             else el1 = additem(el1, p->field);
  247.         }
  248.         else
  249.         {
  250.             if (head2 == NULL)
  251.             {
  252.                 el2 = init(p->field);
  253.                 head2 = el2;
  254.             }
  255.             else el2 = additem(el2, p->field);
  256.         }
  257.         p = p->next;
  258.     } while (p != NULL);
  259.     cout << "\n Выводим список с положительнымии елементами \n";
  260.     outList(head1);
  261.     cout << "\n Выводим список с положительнымии елементами \n";
  262.     outList(head2);
  263.     //удалим список
  264.     deleteList(head1);
  265.     deleteList(head2);
  266. }
  267.  
  268. void Z3(struct list* root)
  269. {
  270.     cout << "\n Задача 3 \n";
  271.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  272.  
  273.     struct list* head1 = NULL;
  274.     struct list* el = NULL;
  275.     struct list* p = root;
  276.     do {
  277.         if (head1 == NULL)
  278.         {
  279.             el = init(p->field);
  280.             head1 = el;
  281.         }
  282.         else el = additem(el, p->field);
  283.         p = p->next;
  284.     } while (p != NULL);
  285.  
  286.  
  287.     //ищем миним и макс элементы
  288.     p = head1;
  289.     struct list* min = p;
  290.     struct list* max = p;
  291.     int pos_min = 0, pos_max = 0, i = 0;
  292.     do {
  293.         if (min->field > p->field)
  294.         {
  295.             min = p;
  296.             pos_min = i;
  297.         }
  298.  
  299.         if (max->field < p->field)
  300.         {
  301.             max = p;
  302.             pos_max = i;
  303.         }
  304.  
  305.         p = p->next;
  306.         i++;
  307.     } while (p != NULL);
  308.  
  309.     //удаляем лишние элементы
  310.     //получим элемент отсчета
  311.     int j = 0;
  312.     if (pos_min < pos_max)
  313.     {
  314.         p = min;
  315.         j = pos_max;
  316.     }
  317.     else
  318.     {
  319.         p = max;
  320.         j = pos_min;
  321.     }
  322.     //удаление
  323.     i = 0;
  324.     do {
  325.         if ((p != min) && (p != max) && (i < j))
  326.             p = deleteitem(p);
  327.  
  328.         p = p->next;
  329.         i++;
  330.     } while (((p != NULL) || (p == min) || (p == max)) && (i < j));
  331.  
  332.     //выводим список на экран
  333.     outList(head1);
  334.     //
  335.     deleteList(head1);
  336. }
  337.  
  338. void Z4(struct list* root)
  339. {
  340.     cout << "\n Задача 4 \n";
  341.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  342.  
  343.     struct list* head1 = NULL;
  344.     struct list* el = NULL;
  345.     struct list* p = root;
  346.     do {
  347.         if (head1 == NULL)
  348.         {
  349.             el = init(p->field);
  350.             head1 = el;
  351.         }
  352.         else el = additem(el, p->field);
  353.         p = p->next;
  354.     } while (p != NULL);
  355.  
  356.  
  357.     //ищем макс элемент
  358.     p = head1;
  359.     struct list* max = p;
  360.     do {
  361.         if (max->field < p->field)
  362.             max = p;
  363.         p = p->next;
  364.     } while (p != NULL);
  365.  
  366.     //переходим к макс элементу
  367.     p = head1;
  368.     do {
  369.         if (max == p)
  370.             break;
  371.  
  372.         p = p->next;
  373.     } while (p != NULL);
  374.  
  375.     //Переносим элементы во 2 список
  376.     struct list* head2 = NULL;
  377.     p = p->next;
  378.     if (p != NULL)
  379.     {
  380.         el = NULL;
  381.         do {
  382.             if (head2 == NULL)
  383.             {
  384.                 el = init(p->field);
  385.                 head2 = el;
  386.             }
  387.             else el = additem(el, p->field);
  388.             p = p->next;
  389.         } while (p != NULL);
  390.     }
  391.  
  392.     //выводим список на экран
  393.     outList(head2);
  394.     //
  395.     deleteList(head2);
  396. }
  397.  
  398. void Z5(struct list* root)
  399. {
  400.     struct list* p = root;
  401.     int pos=0;
  402.  
  403.     cout << "\n Задача 5 \n";
  404.     cout << "Введите число позиций для сдвига. \n";
  405.     cin >> pos;
  406.     cout << "\n";
  407.  
  408.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  409.     struct list* head1 = NULL;
  410.     struct list* el = NULL;
  411.     do {
  412.         if (head1 == NULL)
  413.         {
  414.             el = init(p->field);
  415.             head1 = el;
  416.         }
  417.         else el = additem(el, p->field);
  418.         p = p->next;
  419.     } while (p != NULL);
  420.  
  421.     //зацикливаем список
  422.     //el  -  последний элем списка
  423.     head1->prev = el;
  424.     el->next = head1;
  425.  
  426.     //сместим элементы списка по кольцу на pos позиций
  427.     int i;
  428.     p = head1;
  429.     //
  430.     for (i = 0; i < pos; i++)
  431.         p = p->next;
  432.     //определим новый корень списка
  433.     head1 = p;
  434.     p->prev->next = NULL;
  435.     head1->prev = NULL;
  436.  
  437.     //выводим список на экран
  438.     outList(head1);
  439.     //
  440.     deleteList(head1);
  441. }
  442.  
  443. void Z6(struct list* root)
  444. {
  445.     struct list* p = root;
  446.  
  447.     cout << "\n Задача 6 \n";
  448.  
  449.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  450.     struct list* head1 = NULL;
  451.     struct list* el = NULL;
  452.     do {
  453.         if (head1 == NULL)
  454.         {
  455.             el = init(p->field);
  456.             head1 = el;
  457.         }
  458.         else el = additem(el, p->field);
  459.         p = p->next;
  460.     } while (p != NULL);
  461.     p = head1;
  462.    
  463.     //удалим все отрицательные эл-ты
  464.     do {
  465.         if (p->field < 0)
  466.             p = deleteitem(p);
  467.  
  468.         p = p->next;
  469.     } while (p != NULL);
  470.  
  471.     cout << "\n Выводим список\n";
  472.     outList(head1);
  473.     //удалим список
  474.     deleteList(head1);
  475.  }
  476.  
  477. void Z7(struct list* root)
  478. {
  479.     cout << "\n Задача 7 \n";
  480.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  481.  
  482.     struct list* head1 = NULL;
  483.     struct list* el = NULL;
  484.     struct list* p = root;
  485.     do {
  486.         if (head1 == NULL)
  487.         {
  488.             el = init(p->field);
  489.             head1 = el;
  490.         }
  491.         else el = additem(el, p->field);
  492.         p = p->next;
  493.     } while (p != NULL);
  494.  
  495.  
  496.     //ищем миним и макс элементы
  497.     p = head1;
  498.     struct list* min = p;
  499.     struct list* max = p;
  500.     int pos_min = 0, pos_max = 0, i = 0;
  501.     do {
  502.         if (min->field > p->field)
  503.         {
  504.             min = p;
  505.             pos_min = i;
  506.         }
  507.  
  508.         if (max->field < p->field)
  509.         {
  510.             max = p;
  511.             pos_max = i;
  512.         }
  513.  
  514.         p = p->next;
  515.         i++;
  516.     } while (p != NULL);
  517.  
  518.     //удаляем лишние элементы
  519.     //получим элемент отсчета
  520.     int j = 0;
  521.     if (pos_min < pos_max)
  522.     {
  523.         p = min;
  524.         j = pos_max;
  525.     }
  526.     else
  527.     {
  528.         p = max;
  529.         j = pos_min;
  530.     }
  531.     //создаем новый список
  532.     struct list* head2 = NULL;
  533.     el = NULL;
  534.  
  535.     i = 0;
  536.     do {
  537.         if ((p != min) && (p != max) && (i < j))
  538.         {
  539.             if (head2 == NULL)
  540.             {
  541.                 el = init(p->field);
  542.                 head2 = el;
  543.             }
  544.             else el = additem(el, p->field);
  545.         }
  546.         p = p->next;
  547.         i++;
  548.     } while (((p != NULL) || (p == min) || (p == max)) && (i < j));
  549.     //превращаем список в кольцо
  550.     head2->prev = el;
  551.     el->next = head2;
  552.  
  553.     //выводим исходный список, чтобы показать что он не изменился
  554.     outList(head1);
  555.     cout << "\n";
  556.     //выводим список-кольцо на экран (делаем 3 оборота чтобы показать замкнутость списка)
  557.     p = head2;
  558.     if (p == NULL)
  559.     {
  560.         cout << "Список пуст";
  561.     }
  562.     else
  563.     {
  564.         i = 0;
  565.         do {
  566.             printf("%d ", p->field);
  567.            
  568.             if (p == head2)
  569.                 i++;
  570.  
  571.             p = p->next;
  572.         } while ((p != NULL)&&(i<3));
  573.     }  
  574.     //
  575.     deleteList(head1);
  576.     //перед удалением списка-кольца - разомкнем его
  577.     head2->prev = NULL;
  578.     el->next = NULL;
  579.     deleteList(head2);
  580. }
  581.  
  582. void Z8(struct list* root)
  583. {
  584.     struct list* p = root;
  585.  
  586.     cout << "\n Задача 8 \n";
  587.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  588.  
  589.     struct list* head1 = NULL;
  590.     struct list* el = NULL;
  591.     do {
  592.         if (head1 == NULL)
  593.         {
  594.             el = init(p->field);
  595.             head1 = el;
  596.         }
  597.         else el = additem(el, p->field);
  598.         p = p->next;
  599.     } while (p != NULL);
  600.     p = head1->next;
  601.     // удалим первый элемент
  602.     deleteitem(head1);
  603.     head1 = p;
  604.     // удалим последний элемент
  605.     el= deleteitem(el);
  606.     //выводим список на экран
  607.     outList(head1);
  608.     //
  609.     deleteList(head1);
  610. }
  611.  
  612. void Z9(struct list* root)
  613. {
  614.     struct list* p = root;
  615.     struct list* min;
  616.  
  617.     cout << "\n Задача 1 \n";
  618.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  619.  
  620.     struct list* head1 = NULL;
  621.     struct list* el = NULL;
  622.     do {
  623.         if (head1 == NULL)
  624.         {
  625.             el = init(p->field);
  626.             head1 = el;
  627.         }
  628.         else el = additem(el, p->field);
  629.         p = p->next;
  630.     } while (p != NULL);
  631.     p = head1;
  632.     min = p;
  633.     //ищем миним элемент
  634.     do {
  635.         if (min->field > p->field)
  636.             min = p;
  637.         p = p->next;
  638.     } while (p != NULL);
  639.     //удаление
  640.     if (min->prev == NULL)
  641.         head1 = deleteitem(min);
  642.     else if (min->next == NULL)
  643.             deleteitem(min);
  644.          else
  645.          {
  646.             if (min->prev->prev==NULL)
  647.                 head1=deleteitem(min->next);
  648.             else
  649.                 deleteitem(min->next);
  650.             deleteitem(min->prev);
  651.          }
  652.     //выводим список на экран
  653.     outList(head1);
  654.     //
  655.     deleteList(head1);
  656. }
  657.  
  658. void Z11(struct list* root)
  659. {
  660.     struct list* p = root;
  661.  
  662.     cout << "\n Задача 11 \n";
  663.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  664.  
  665.     struct list* head1 = NULL;
  666.     struct list* el = NULL;
  667.     do {
  668.         if (head1 == NULL)
  669.         {
  670.             el = init(p->field);
  671.             head1 = el;
  672.         }
  673.         else el = additem(el, p->field);
  674.         p = p->next;
  675.     } while (p != NULL);
  676.     p = head1;
  677.  
  678.     struct list* p1 = p->next;
  679.     //ищем миним элемент
  680.     do {
  681.         p1 = p->next;
  682.         bool b = false;
  683.         while (p1 != NULL)
  684.         {
  685.             if (p1->field == p->field)
  686.             {
  687.                 p1 = deleteitem(p1);
  688.                 b = true;
  689.             }
  690.             p1 = p1->next;
  691.         }
  692.         p1 = p;
  693.         p = p->next;
  694.  
  695.         if (b)
  696.         {
  697.             if (p1->prev == NULL)
  698.                 head1 = deleteitem(p1);
  699.             else
  700.                 deleteitem(p1);
  701.         }
  702.  
  703.     } while (p != NULL);
  704.  
  705.     //выводим список на экран
  706.     outList(head1);
  707.     //
  708.     deleteList(head1);
  709. }
  710.  
  711. void Z12(struct list* root)
  712. {
  713.     cout << "\n Задача 12 \n";
  714.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  715.  
  716.     struct list* head1 = NULL;
  717.     struct list* el = NULL;
  718.     struct list* p = root;
  719.     do {
  720.         if (head1 == NULL)
  721.         {
  722.             el = init(p->field);
  723.             head1 = el;
  724.         }
  725.         else el = additem(el, p->field);
  726.         p = p->next;
  727.     } while (p != NULL);
  728.  
  729.  
  730.     //ищем миним и макс элементы
  731.     p = head1;
  732.     struct list* min = p;
  733.     struct list* max = p;
  734.     int pos_min = 0, pos_max = 0, i = 0;
  735.     do {
  736.         if (min->field > p->field)
  737.         {
  738.             min = p;
  739.             pos_min = i;
  740.         }
  741.  
  742.         if (max->field < p->field)
  743.         {
  744.             max = p;
  745.             pos_max = i;
  746.         }
  747.  
  748.         p = p->next;
  749.         i++;
  750.     } while (p != NULL);
  751.  
  752.     //меняем их местами
  753.     head1=swap(head1,min, max);
  754.     //выводим список на экран
  755.     outList(head1);
  756.     //
  757.     deleteList(head1);
  758. }
  759.  
  760.  
  761. void Z13(struct list* root)
  762. {
  763.     struct list* p = root;
  764.     int pos = 0;
  765.  
  766.     cout << "\n Задача 13 \n";
  767.  
  768.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  769.     struct list* head1 = NULL;
  770.     struct list* el = NULL;
  771.     do {
  772.         if (head1 == NULL)
  773.         {
  774.             el = init(p->field);
  775.             head1 = el;
  776.         }
  777.         else el = additem(el, p->field);
  778.         p = p->next;
  779.     } while (p != NULL);
  780.  
  781.     //закольцуем список
  782.     //el  -  последний элем списка
  783.     head1->prev = el;
  784.     el->next = head1;
  785.  
  786.     //становимся в конерь на старт
  787.     el = head1;
  788.     pos = 1;
  789.     while (pos!=0)
  790.     {
  791.         p = head1;
  792.         //выводим список на экран
  793.         cout << "СПИСОК \n";
  794.         do {
  795.             if (p == el)
  796.             {
  797.                 printf("%c", "*");
  798.                 printf("%d ", p->field);
  799.             }
  800.             else
  801.                 printf("%d ", p->field);
  802.             p = p->next;
  803.         } while (p != head1);
  804.  
  805.         cout << "\n Введите число позиций для сдвига. (0 - прекратить) \n";
  806.         cin >> pos;
  807.         cout << "\n";
  808.  
  809.         int i;
  810.  
  811.         if (pos > 0)
  812.         {
  813.             for (i = 0; i < pos; i++)
  814.                 el = el->next;
  815.         }
  816.         else
  817.         {
  818.             for (i = pos; i <0; i++)
  819.                 el = el->prev;
  820.         }
  821.     }
  822.  
  823.     //возвращаемся в обычный список из кольца
  824.     head1->prev->next = NULL;
  825.     head1->prev= NULL;
  826.  
  827.     //выводим список на экран
  828.     cout << "Исходный список \n";
  829.     outList(head1);
  830.     //
  831.     deleteList(head1);
  832. }
  833.  
  834. void Z14(struct list* root)
  835. {
  836.     cout << "\n Задача 14 \n";
  837.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  838.  
  839.     struct list* head1 = NULL;
  840.     struct list* el = NULL;
  841.     struct list* p = root;
  842.     do {
  843.         if (head1 == NULL)
  844.         {
  845.             el = init(p->field);
  846.             head1 = el;
  847.         }
  848.         else el = additem(el, p->field);
  849.         p = p->next;
  850.     } while (p != NULL);
  851.  
  852.  
  853.     //ищем макс элемент
  854.     p = head1;
  855.     struct list* max = p;
  856.     do {
  857.         if (max->field < p->field)
  858.             max = p;
  859.  
  860.         p = p->next;
  861.     } while (p != NULL);
  862.  
  863.     //меняем  местами max и корень
  864.     head1 = swap(head1, head1, max);
  865.     //выводим список на экран
  866.     outList(head1);
  867.     //
  868.     deleteList(head1);
  869. }
  870.  
  871. void Z15(struct list* root)
  872. {
  873.     cout << "\n Задача 15 \n";
  874.     //сделаем копию списка, чтобы не испортить исходный для посл заданий
  875.  
  876.     struct list* head1 = NULL;
  877.     struct list* el = NULL;
  878.     struct list* p = root;
  879.     do {
  880.         if (head1 == NULL)
  881.         {
  882.             el = init(p->field);
  883.             head1 = el;
  884.         }
  885.         else el = additem(el, p->field);
  886.         p = p->next;
  887.     } while (p != NULL);
  888.  
  889.  
  890.     //ищем последний элемент
  891.     p = head1;
  892.     struct list* p1 = p;
  893.     do {
  894.          p1 = p;
  895.          p = p->next;
  896.     } while (p != NULL);
  897.  
  898.     //меняем  местами max и корень
  899.     head1 = swap(head1, head1, p1);
  900.     //выводим список на экран
  901.     outList(head1);
  902.     //
  903.     deleteList(head1);
  904. }
  905.  
  906. int main()
  907. {
  908.     setlocale(LC_ALL, "Russian");
  909.  
  910.     //создадим новый список
  911.     cout << "Введите элементы списка. (Для прекращения введите 55) \n";
  912.     int el;
  913.     list *elem=NULL; //содержит текущий элемент списка
  914.  
  915.     do
  916.     {
  917.         cin >> el;
  918.         if ((el >= -50) && (el <= 50))
  919.         {
  920.             if (head == NULL)
  921.             {
  922.                 elem = init(el);
  923.                 head = elem;
  924.             }
  925.             else elem=additem(elem, el);
  926.         }
  927.     } while (el != 55);
  928.    
  929.     //задание - 1
  930.     //Z1(head);
  931.     //задание - 2
  932.    // Z2(head);
  933.     //задание - 3
  934.    // Z3(head);
  935.     //задание - 4
  936.    // Z4(head);
  937.     //задание - 5
  938.    // Z5(head);
  939.     //задание - 6
  940.    //  Z6(head);
  941.     //задание - 7
  942.    //  Z7(head);
  943.     //задание - 8
  944.    //  Z8(head);
  945.     //задание - 9
  946.    //  Z9(head);
  947.     //задание - 10
  948.    //  Z3(head);
  949.     //задание - 11
  950.     // Z11(head);
  951.     //задание - 12
  952.     //Z12(head);
  953.     //задание - 13
  954.     //Z13(head);
  955.     //задание - 14
  956.    // Z14(head);
  957.     //задание - 15
  958.    // Z15(head);
  959.    //удалим список
  960.     deleteList(head);
  961.    
  962. }
  963.  
  964. // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
  965. // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
  966.  
  967. // Советы по началу работы
  968. //   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
  969. //   2. В окне Team Explorer можно подключиться к системе управления версиями.
  970. //   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
  971. //   4. В окне "Список ошибок" можно просматривать ошибки.
  972. //   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
  973. //   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
  974.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement