Advertisement
rado_dimitrov66

Queue

Apr 15th, 2024
639
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.33 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct Queue
  6. {
  7.     int value;
  8.     Queue* next;
  9. } *first = NULL, * last = NULL;
  10.  
  11.  
  12.  
  13. void addValues(unsigned int& counter)
  14. {
  15.  
  16.     Queue* p = last;
  17.  
  18.     int n;
  19.  
  20.     cout << "Enter a value: ";
  21.     cin >> n;
  22.  
  23.     last = new Queue;
  24.  
  25.     last->value = n;
  26.     last->next = NULL;
  27.  
  28.     if (first == NULL)
  29.     {
  30.         first = last;
  31.     }
  32.     else
  33.     {
  34.         p->next = last;
  35.     }
  36.  
  37.     counter++;
  38.  
  39. }
  40.  
  41. void removeValues()
  42. {
  43.    
  44.     while (first)
  45.     {
  46.         Queue* p = first;
  47.  
  48.         first = p->next;
  49.         delete p;
  50.     }
  51.  
  52.     cout << "The queue is already empty" << endl;
  53.     cout << endl;  
  54.  
  55. }
  56.  
  57. void printValues()
  58. {
  59.     Queue* p = first;
  60.  
  61.     while (p != NULL)
  62.     {
  63.         cout << p->value << " ";
  64.         p = p->next;
  65.     }
  66.     cout << endl;
  67. }
  68.  
  69. void removeNAndChange(unsigned int& counter)
  70. {
  71.     int n;
  72.     int x;
  73.  
  74.     Queue* p = first;
  75.  
  76.     do
  77.     {
  78.         cout << "Enter a number of element to remove" << "[" << counter << "-2]: ";
  79.         cin >> n;
  80.  
  81.     } while (n < 2 || n > counter);
  82.  
  83.     cout << "Enter a new value: ";
  84.     cin >> x;
  85.  
  86.     if (n == 2)
  87.     {
  88.         p = p->next;
  89.  
  90.         first->value = x;
  91.  
  92.         first->next = p->next;
  93.  
  94.         delete p;
  95.  
  96.         counter--;
  97.  
  98.     }
  99.     else {
  100.  
  101.         for (int i = 2; i <= n - 1; i++)
  102.         {
  103.             p = p->next;
  104.  
  105.         }
  106.  
  107.         p->value = x;
  108.  
  109.         if (n < counter)
  110.         {
  111.             p->next = p->next->next;
  112.  
  113.             p = p->next;
  114.  
  115.             delete p;
  116.         }
  117.         else
  118.         {
  119.             p->next = NULL;
  120.         }
  121.  
  122.         counter--;
  123.     }
  124.  
  125. }
  126.  
  127. int main()
  128. {
  129.     short choose = -1;
  130.  
  131.     unsigned int counter = 0;
  132.  
  133.     do
  134.     {
  135.  
  136.         cout << "[1] Add a value to the queue\n[2] Remove element/s\n[3] Print all elements\n[4] Remove N element by last to start and Change value on N-1\n";
  137.         cin >> choose;
  138.  
  139.         switch (choose)
  140.         {
  141.  
  142.         case 1:
  143.  
  144.             system("cls");
  145.  
  146.             addValues(counter);
  147.  
  148.  
  149.             choose = -1;
  150.  
  151.  
  152.             break;
  153.  
  154.         case 2:
  155.  
  156.             system("cls");
  157.  
  158.             if (first)
  159.             {
  160.                 removeValues();
  161.             }
  162.             else
  163.             {
  164.                 cout << "The queue is empty" << endl;
  165.             }
  166.  
  167.             choose = -1;
  168.  
  169.             break;
  170.  
  171.  
  172.         case 3:
  173.  
  174.             system("cls");
  175.  
  176.             if (first)
  177.             {
  178.                 printValues();
  179.             }
  180.             else
  181.             {
  182.                 cout << "The queue is empty" << endl;
  183.             }
  184.  
  185.             choose = -1;
  186.  
  187.             break;
  188.         case 4:
  189.  
  190.             system("cls");
  191.  
  192.             if (first)
  193.             {
  194.                 removeNAndChange(counter);
  195.             }
  196.             else {
  197.                 cout << "The queue is empty" << endl;
  198.             }
  199.  
  200.             choose = -1;
  201.  
  202.             break;
  203.         default:
  204.             break;
  205.         }
  206.  
  207.     } while (choose < 0 || choose > 4);
  208. }
  209.  
  210.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement