Advertisement
danny-iv

Danny_Week10

Apr 22nd, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.95 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct element{
  5.     int key;
  6.     element*next;
  7.     element*prev;
  8. }*start = nullptr;
  9.  
  10. void list()
  11. {
  12.     if (start){
  13.         cout << "List: ";
  14.         element *pointer = start;
  15.         while (pointer){
  16.             cout << pointer->key << "\t";
  17.             pointer = pointer->next;
  18.         }
  19.     }
  20.     else
  21.         cout << "\nPrazen spisyk!!";
  22. }
  23.  
  24. void add_b(int n)
  25. {
  26.     element * pointer = start;
  27.     start = new element;
  28.     start->key = n;
  29.     start->prev = nullptr;
  30.     start->next = pointer;
  31.     if (pointer)
  32.         pointer->prev = start;
  33. }
  34.  
  35. void add_e(int n)
  36. {
  37.     element *q = new element;
  38.     q->next = nullptr;
  39.     q->key = n;
  40.     if (start){
  41.         element *pointer = start;
  42.         while (pointer->next)
  43.             pointer = pointer->next;
  44.         pointer->next = q;
  45.         q->prev = pointer;
  46.     }
  47.     else{
  48.         start = q;
  49.         q->prev = nullptr;
  50.     }
  51. }
  52.  
  53. void add_bk(int n, int k)
  54. {
  55.     element *p = start;
  56.     while (p->key == k && p->next)
  57.         p = p->next;
  58.     if (p->key == k){
  59.         element *q = new element;
  60.         q->next = p->next;
  61.         q->prev = p;
  62.         if (p->next)
  63.             p->next->prev = q;
  64.         p->next = q;
  65.         q->key = n;
  66.         p->key = k;
  67.     }
  68.     else
  69.         cout<<"\nNqma kvo da izvejdam!!";
  70. }
  71.  
  72. void add_ak(int n, int k)
  73. {
  74.     element *p = start;
  75.     while (p->key == k && p->next)
  76.         p = p->next;
  77.     if (p->key == k){
  78.         element *q = new element;
  79.         q->next = p->next;
  80.         q->prev = p;
  81.         if (p->next)
  82.             p->next->prev = q;
  83.         p->next = q;
  84.         q->key = k;
  85.         p->key = n;
  86.     }
  87.     else
  88.         cout << "\nNqma kvo da izvejdam!!";
  89. }
  90.  
  91. int del_k(int k)
  92. {
  93.     if (start){
  94.         element *p = start;
  95.         while (p->key != k && p->next)
  96.             p = p->next;
  97.         if (p->key == k){
  98.             if (start->key == k){
  99.                 start = start->next;
  100.                 if (start)
  101.                     start->prev = nullptr;
  102.             }
  103.             else{
  104.                 p->prev->next = p->next;
  105.                 if (p->next)
  106.                     p->next->prev = p->prev;
  107.             }
  108.             delete p;
  109.             return 1;
  110.         }
  111.         else{
  112.             cout << "\nNqma kvo da trie !";
  113.             return 0;
  114.         }
  115.     }
  116.     else{
  117.         cout << "\nPrazen spisyk";
  118.         return 0;
  119.     }
  120. }
  121.  
  122. void invert()
  123. {
  124.     element *p = start ,*q;
  125.     while (p){
  126.         q = p->next;
  127.         p->next = p->prev;
  128.         p->prev = q;
  129.         if (q == nullptr)
  130.             start = p;
  131.         p = q;
  132.     }
  133. }
  134.  
  135. int main()
  136. {
  137.     int izbor, n, k;
  138.  
  139.     do{
  140.         cout << "\n\nMENU" << endl;
  141.         cout << "1- Add first" << endl;
  142.         cout << "2- Add last" << endl;
  143.         cout << "3- Add before" << endl;
  144.         cout << "4- Add after" << endl;
  145.         cout << "5- Del k" << endl;
  146.         cout << "6- Invert" << endl;
  147.         cout << "7- List" << endl;
  148.         cout << "Izbor: ";
  149.         cin >> izbor;
  150.  
  151.         if (izbor < 5){
  152.             cout << "\nNov element: ";
  153.             cin >> n;
  154.         }
  155.         if (izbor >2 && izbor < 6){
  156.             cout << "\n k= ";
  157.             cin >> k;
  158.         }
  159.  
  160.         switch (izbor)
  161.         {
  162.         case 1:
  163.             add_b(n);
  164.             list();
  165.             break;
  166.         case 2:
  167.             add_e(n);
  168.             list();
  169.             break;
  170.         case 3:
  171.             add_bk(n, k);
  172.             list();
  173.             break;
  174.         case 4:
  175.             add_ak(n, k);
  176.             list();
  177.             break;
  178.         case 5:
  179.             del_k(k);
  180.             list();
  181.             break;
  182.         case 6:
  183.             invert();
  184.             list();
  185.             break;
  186.         case 7:
  187.             list();
  188.             break;
  189.         }
  190.     } while (izbor > 0 && izbor < 8);
  191.  
  192.     return 0;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement