Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.21 KB | None | 0 0
  1. // ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. struct Node
  10. {
  11.     int data;
  12.     Node* pNext;
  13. };
  14. int Count(Node* item)
  15. {
  16.     int i = 0;
  17.     while (item != NULL)
  18.     {
  19.         item = item->pNext;
  20.         i++;
  21.     }
  22.  
  23.     return i;
  24. }
  25. void PrintList(Node* head)
  26. {
  27.     Node* current = head;
  28.     while (current != NULL)
  29.     {
  30.         cout << current->data << ",";
  31.         current = current->pNext;
  32.     }
  33.  
  34. }
  35.  
  36. int _tmain(int argc, _TCHAR* argv[])
  37. {
  38.     int d = 1;
  39.     while (d != 0)
  40.     {
  41.         int n;
  42.  
  43.         cout << "enter # of elements: ";
  44.         cin >> n;
  45.  
  46.         Node head;
  47.         head.pNext = NULL;
  48.         for (int i = 1; i <= n; i++)
  49.         {
  50.             if (i == 1)
  51.             {
  52.                 head.data = i;
  53.                 continue;
  54.             }
  55.  
  56.             Node* last = &head;
  57.             while (last->pNext)
  58.             {
  59.                 last = last->pNext;
  60.             }
  61.  
  62.             Node* element = new Node();
  63.             element->data = i;
  64.             element->pNext = NULL;
  65.  
  66.             last->pNext = element;
  67.         }
  68.         /*
  69.         PrintList(&head);
  70.  
  71.         int j;
  72.         cout << endl << "please index to insert a new element (1 - " << n << "): ";
  73.         cin >> j;
  74.  
  75.         Node* insertAfter = &head;
  76.         int i = 1;
  77.         while (i < j)
  78.         {
  79.         insertAfter = insertAfter->pNext;
  80.         i++;
  81.         }
  82.  
  83.         Node* element2 = new Node();
  84.         element2->data = 999;
  85.         element2->pNext = insertAfter->pNext;
  86.         insertAfter->pNext = element2;
  87.         n++;
  88.  
  89.         PrintList(&head);
  90.  
  91.         //udalenie elementov
  92.  
  93.         int k;
  94.         cout << endl << "enter index of elements to delete (1 - " << n << "): ";
  95.         cin >> k;
  96.  
  97.         Node* prevDelete = &head;
  98.         for (int i = 1; i < k - 1; i++)
  99.         {
  100.         prevDelete = prevDelete->pNext;
  101.         }
  102.  
  103.         Node* toDelete = prevDelete->pNext;
  104.         prevDelete->pNext = prevDelete->pNext->pNext;
  105.         delete toDelete;
  106.  
  107.         Node* lastDelete = &head;
  108.         for (int i = 1; i < n - 2; i++)
  109.         {
  110.         lastDelete = lastDelete->pNext;
  111.         }
  112.         Node* toDel = lastDelete->pNext;
  113.         lastDelete->pNext = toDel->pNext;
  114.         delete toDel;
  115.         head = *head.pNext;
  116.         n = n - 3;
  117.         */
  118.         PrintList(&head);
  119.  
  120.         //smena mestami
  121.  
  122.         int b, a;
  123.         int z = 0;
  124.         int x = 0;
  125.         cout << endl << "smenit element nomer" << "\t";
  126.         cin >> z;
  127.         cout << "na element nomer" << "\t";
  128.         cin >> x;
  129.         Node* smen1 = new Node();
  130.         Node* smen2 = new Node();
  131.         Node* cashe1 = &head;
  132.         Node* cashe2 = &head;
  133.         Node* cashe3 = &head;
  134.         Node* cashe4 = &head;
  135.         if (x > z)
  136.         {
  137.             a = z;
  138.             b = x;
  139.         }
  140.         else
  141.         {
  142.             a = x;
  143.             b = z;
  144.         }
  145.         if (a > b)
  146.         {
  147.             int c = a;
  148.             a = b;
  149.             b = c;
  150.         }
  151.         else
  152.         {
  153.             if (b > a)
  154.             {
  155.  
  156.                 if ((a != 1) && (a != n) && (b != 1) && (b != n))
  157.                 {
  158.  
  159.                     {
  160.                         int l = 1;
  161.                         while (l < b)
  162.                         {
  163.                             cashe1 = cashe1->pNext;
  164.                             l++;
  165.                         }
  166.                         int k = 1;
  167.                         while (k < a)
  168.                         {
  169.                             cashe2 = cashe2->pNext;
  170.                             k++;
  171.                         }
  172.                         int i = 1;
  173.                         while (i < a-1)
  174.                         {
  175.                             cashe3 = cashe3->pNext;
  176.                             i++;
  177.                         }
  178.                         int j = 1;
  179.                         while (j < b-1)
  180.                         {
  181.                             cashe4 = cashe4->pNext;
  182.                             j++;
  183.                         }
  184.                         if (b-a == 1)
  185.                         {
  186.                             smen1->pNext = cashe1->pNext;
  187.                             cashe1->pNext = cashe3->pNext;
  188.                         }
  189.                         else
  190.                         {
  191.                             smen1->pNext = cashe1->pNext;
  192.                             cashe1->pNext = cashe2->pNext;
  193.                         }
  194.                         smen2->pNext = cashe3->pNext;
  195.                         cashe3->pNext = cashe4->pNext;
  196.                         cashe4->pNext = smen2->pNext;
  197.                         cashe2->pNext = smen1->pNext;
  198.                     }
  199.                     PrintList(&head);
  200.                 }
  201.                 else
  202.                 {
  203.                     if ((a == 1) || (b == 1))
  204.                     {
  205.                         int l = 1;
  206.                         while (l < b)
  207.                         {
  208.                             cashe1 = cashe1->pNext;
  209.                             l++;
  210.                         }
  211.                         int k = 1;
  212.                         while (k < a)
  213.                         {
  214.                             cashe2 = cashe2->pNext;
  215.                             k++;
  216.                         }
  217.                         int j = 1;
  218.                         while (j < b-1)
  219.                         {
  220.                             cashe4 = cashe4->pNext;
  221.                             j++;
  222.                         }
  223.                         if (b-a == 1)
  224.                         {
  225.                             smen1->pNext = cashe1->pNext;
  226.                             cashe1->pNext = &head;
  227.                         }
  228.                         else
  229.                         {
  230.                             smen1->pNext = cashe1->pNext;
  231.                             cashe1->pNext = cashe2->pNext;
  232.                         };
  233.                         smen2->pNext = cashe4->pNext;
  234.                         cashe4->pNext = &head;
  235.                         cashe2->pNext = smen1->pNext;
  236.                         PrintList(smen2->pNext);
  237.  
  238.                     }
  239.                     else
  240.                     {
  241.                         if ((a == n) || (b == n))
  242.                         {
  243.                             int l = 1;
  244.                             while (l < a)
  245.                             {
  246.                                 cashe1 = cashe1->pNext;
  247.                                 l++;
  248.                             }
  249.                             int k = 1;
  250.                             while (k < b)
  251.                             {
  252.                                 cashe2 = cashe2->pNext;
  253.                                 k++;
  254.                             }
  255.                             int i = 1;
  256.                             while (i < b-1)
  257.                             {
  258.                                 cashe3 = cashe3->pNext;
  259.                                 i++;
  260.                             }
  261.                             int j = 1;
  262.                             while (j < a-1)
  263.                             {
  264.                                 cashe4 = cashe4->pNext;
  265.                                 j++;
  266.                             }
  267.                             smen1->pNext = cashe1->pNext;
  268.                             cashe1->pNext = NULL;
  269.                             if (b-a == 1)
  270.                             {
  271.                                 smen2->pNext = cashe4->pNext;
  272.                                 cashe4->pNext = smen1->pNext;
  273.                                 cashe2->pNext = smen2->pNext;
  274.                             }
  275.                             else
  276.                             {
  277.                                 smen2->pNext = cashe3->pNext;
  278.                                 cashe3->pNext = cashe4->pNext;
  279.                                 cashe4->pNext = smen2->pNext;
  280.                                 cashe2->pNext = smen1->pNext;
  281.                             }
  282.                             PrintList(&head);
  283.                         }
  284.                     }
  285.  
  286.                 }
  287.             }
  288.  
  289.             else
  290.             {
  291.                 if ((a = b) || (b = a))
  292.                 {
  293.                     PrintList(&head);
  294.                 }
  295.  
  296.             }
  297.  
  298.         }
  299.         cout << endl << "do you want to do it again?(0 - no)" << endl;
  300.         cin >> d;
  301.     }
  302.     return 0;
  303. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement