Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.22 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. struct node {
  4.     int x;
  5.     node *next;
  6. };
  7. void addnode(node *&poczatek);
  8. void show(node *poczatek);
  9. void deletevalue(node *poczatek);
  10. void delete2(node *poczatek);
  11. void swap(node *&poczatek);
  12. void swap2(node *poczatek);
  13. void findx(node *&poczatek);
  14. void changeside(node *&poczatek);
  15. void tailtohead(node *&poczatek);
  16. void deletexn(node *poczatek);
  17. int main() {
  18.     node *poczatek;
  19.     poczatek = NULL;
  20.     int switchcase = 0;
  21.     int end = 0;
  22.     addnode(poczatek);
  23.     do {
  24.         cout << endl << endl;
  25.         cout << "1-usun co 2 element\n2-zamien pierwszy z ostatnim\n3-co drugi element na koniec\n"
  26.             << "4-usun co trzeci element\n5-znalezc elemnt o danej wartosci i go usunac\n6-zamiana stron\n7-ostatni element na poczatek\n8-usuwa n elementow za podanym x\n16-koniec" << endl;
  27.         cin >> switchcase;
  28.         show(poczatek);
  29.         cout << endl << endl;
  30.         switch (switchcase)
  31.         {
  32.         case 1:
  33.             deletevalue(poczatek);
  34.             show(poczatek);
  35.             break;
  36.         case 2:
  37.             swap(poczatek);
  38.             cout << endl << endl;
  39.             show(poczatek);
  40.             break;
  41.         case 3:
  42.             swap2(poczatek);
  43.             cout << endl << endl;
  44.             show(poczatek);
  45.             break;
  46.         case 4:
  47.             delete2(poczatek);
  48.             cout << endl << endl;
  49.             show(poczatek);
  50.             break;
  51.         case 5:
  52.             findx(poczatek);
  53.             cout << endl << endl;
  54.             show(poczatek);
  55.             break;
  56.         case 6:
  57.             changeside(poczatek);
  58.             cout << endl << endl;
  59.             show(poczatek);
  60.             break;
  61.         case 7:
  62.             tailtohead(poczatek);
  63.             cout << endl << endl;
  64.             show(poczatek);
  65.             break;
  66.         case 8:
  67.             deletexn(poczatek);
  68.             cout << endl << endl;
  69.             show(poczatek);
  70.             break;
  71.         case 16:
  72.             end = 1;
  73.             break;
  74.  
  75.         }
  76.         system("pause");
  77.         system("cls");
  78.     } while (end != 1);
  79.     return 0;
  80. }
  81. void addnode(node *&poczatek) {
  82.     node *temp = NULL;
  83.     for (int a = 0;a <6;a++) {
  84.         node *wsk = new node;
  85.         if (poczatek == NULL)
  86.         {
  87.             cout << "Podaj liczbe: ";
  88.             cin >> wsk->x;
  89.             wsk->next = poczatek;
  90.             poczatek = wsk;
  91.             temp = poczatek;
  92.         }
  93.         else {
  94.             cout << "Podaj liczbe: ";
  95.             cin >> wsk->x;
  96.             temp->next = wsk;
  97.             wsk->next = NULL;
  98.             temp = wsk;
  99.         }
  100.     }
  101. }
  102. void show(node *poczatek) {
  103.     node *temp = poczatek;
  104.     while (temp != NULL) {
  105.         cout << temp->x << "  ";
  106.         temp = temp->next;
  107.     }
  108. }
  109. void deletevalue(node *poczatek) {
  110.     node *tmpHead = poczatek;
  111.     while (tmpHead->next && tmpHead->next->next != NULL)
  112.     {
  113.         node* tmp = tmpHead->next;
  114.         tmpHead->next = tmp->next;
  115.         tmpHead = tmpHead->next;
  116.         delete tmp;
  117.     }
  118.     if (tmpHead->next != NULL)
  119.     {
  120.         node* tmp = tmpHead->next;
  121.         tmpHead->next = tmp->next;
  122.         tmpHead = tmpHead->next;
  123.         delete tmp;
  124.     }
  125. }
  126. void swap(node *&poczatek)
  127. {
  128.     node *tmpHead = poczatek;
  129.     while (tmpHead->next->next && tmpHead->next != NULL) {
  130.         tmpHead = tmpHead->next;
  131.     }
  132.     if (tmpHead->next != NULL) {
  133.         node *tmpTail = tmpHead->next;
  134.         tmpHead->next->next = poczatek->next;
  135.         tmpHead->next = poczatek;
  136.         poczatek->next = NULL;
  137.         poczatek = tmpTail;
  138.     }
  139. }
  140. void swap2(node *poczatek)
  141. {
  142.     node *tmp2 = poczatek;
  143.     while (tmp2->next != NULL) {
  144.         tmp2 = tmp2->next;
  145.     }
  146.     node *tmphead = poczatek;
  147.     node *tmp = poczatek;
  148.     while (tmphead->next->next && tmphead->next != tmp2) {
  149.         node *wsk = tmphead->next;
  150.         tmphead->next = wsk->next;
  151.         tmphead = tmphead->next;
  152.         while (tmp->next != NULL) {
  153.             tmp = tmp->next;
  154.         }
  155.         wsk->next = NULL;
  156.         tmp->next = wsk;
  157.     }
  158. }
  159. void delete2(node *poczatek) {
  160.     node *temp = poczatek;
  161.     while (temp->next && temp->next->next && temp->next->next->next != NULL) {
  162.         node *wsk = temp;
  163.         wsk = temp->next->next;
  164.         temp->next->next = wsk->next;
  165.         temp = temp->next->next;
  166.         delete wsk;
  167.     }
  168.     if (temp->next && temp->next->next != NULL) {
  169.         node *wsk = temp;
  170.         wsk = temp->next->next;
  171.         temp->next->next = wsk->next;
  172.         delete wsk;
  173.     }
  174. }
  175. void findx(node *&poczatek) {
  176.     cout << "podaj wartosc x jaki ma zostac znaleziony i wykasowany: " << endl;
  177.     int value;
  178.     cin >> value;
  179.     node *tmp = poczatek;
  180.     if (tmp->x == value) {
  181.             node *wsk = poczatek;
  182.             poczatek = tmp->next;
  183.             delete wsk;
  184.             tmp = poczatek;
  185.         }
  186.     while (tmp->next != NULL) {
  187.        
  188.         if ((tmp->next && tmp->next->next != NULL) && (tmp->next->x == value)) {
  189.             node *wsk = tmp;
  190.             wsk = tmp->next;
  191.             tmp->next = wsk->next;
  192.  
  193.             delete wsk;
  194.         }
  195.         if (tmp->next != NULL && tmp->next->x == value) {
  196.             node *wsk = tmp;
  197.             wsk = tmp->next;
  198.             tmp->next = wsk->next;
  199.             delete wsk;
  200.         }
  201.         else {
  202.             tmp = tmp->next;
  203.         }
  204.     }
  205. }
  206. void changeside(node *&poczatek) {
  207.     node *tmp = poczatek;
  208.     node *wsk = poczatek;
  209.     node *tmphead = poczatek;
  210.     node *finalhead = poczatek;
  211.     while (wsk->next && tmp->next->next != NULL) {
  212.         wsk = wsk->next;
  213.         tmp = tmp->next;
  214.     }
  215.     if (tmp->next && tmp->next->next == NULL) {
  216.         tmp = tmp->next;
  217.         tmp->next = poczatek;
  218.         wsk->next = NULL;
  219.         poczatek = tmp;
  220.     }
  221.     tmphead = poczatek;
  222.     //---------------- // =) masakra (może i by się dało krócej no ale ważne, że działa ) :D
  223.     while (finalhead->next != NULL)
  224.     {
  225.         wsk = poczatek;
  226.         tmp = poczatek;
  227.  
  228.         while (wsk->next && tmp->next->next != NULL) {
  229.             wsk = wsk->next;
  230.             tmp = tmp->next;
  231.         }
  232.         if (tmp->next->next == NULL) {
  233.             tmp = tmp->next;
  234.             wsk->next = NULL;
  235.             tmp->next = tmphead->next;
  236.             tmphead->next = tmp;
  237.             tmphead = tmphead->next;
  238.         }
  239.     }
  240. }
  241. void tailtohead(node *&poczatek) {
  242.     node *tmp = poczatek;
  243.     node *wsk = poczatek;
  244.     if (tmp != NULL) {
  245.         while (tmp->next && tmp->next->next != NULL) {
  246.             tmp = tmp->next;
  247.         }
  248.         if (tmp->next && tmp->next->next != NULL) {
  249.             wsk = tmp;
  250.             tmp = tmp->next;
  251.             tmp->next = poczatek;
  252.             wsk->next = NULL;
  253.             poczatek = tmp;
  254.         }
  255.         if (tmp->next != NULL) {
  256.             wsk = tmp;
  257.             tmp = tmp->next;
  258.             tmp->next = poczatek;
  259.             wsk->next = NULL;
  260.             poczatek = tmp;
  261.         }
  262.     }
  263. }
  264. void deletexn(node *poczatek) {
  265.     node *tmp = poczatek;
  266.     int value,n;
  267.     cout << "podaj liczbe: " << endl;
  268.     cin >> value;
  269.     cout << "podaj ilosc elementow do usuniecia" << endl;
  270.     cin >> n;
  271.     while (tmp && tmp->next != NULL) {
  272.         if (tmp->x == value) {
  273.             for (int a = 0;a < n;a++) {
  274.                 if (tmp->next != NULL)
  275.                 {
  276.                     node *wsk = tmp;
  277.                     wsk = wsk->next;
  278.                     tmp->next = wsk->next;
  279.                     delete wsk;
  280.                 }
  281.                 else {
  282.                     cout << "nie ma tylu elemntow do usuniecia !" << endl;
  283.                 }
  284.             }
  285.             tmp = tmp->next;
  286.         }
  287.         else {
  288.             tmp = tmp->next;
  289.         }
  290.  
  291.     }
  292.  
  293.  
  294. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement