Advertisement
rado_dimitrov66

Queue2

May 22nd, 2024
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 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. void addValues(int n, unsigned int& counter)
  12. {
  13. Queue* p = last;
  14.  
  15. last = new Queue;
  16. last->value = n;
  17. last->next = NULL;
  18.  
  19. if (first == NULL)
  20. {
  21. first = last;
  22. }
  23. else
  24. {
  25. p->next = last;
  26. }
  27.  
  28. counter++;
  29. }
  30.  
  31. void removeValues()
  32. {
  33. while (first)
  34. {
  35. Queue* p = first;
  36. first = p->next;
  37. delete p;
  38. }
  39.  
  40. cout << "The queue is already empty" << endl;
  41. cout << endl;
  42. }
  43.  
  44. void printValues()
  45. {
  46. Queue* p = first;
  47.  
  48. while (p != NULL)
  49. {
  50. cout << p->value << " ";
  51. p = p->next;
  52. }
  53. cout << endl;
  54. }
  55.  
  56. void removeNAndChange(int n, int x, unsigned int& counter)
  57. {
  58. Queue* p = first;
  59.  
  60. if (n == 2)
  61. {
  62. p = p->next;
  63.  
  64. first->value = x;
  65. first->next = p->next;
  66.  
  67. delete p;
  68. counter--;
  69. }
  70. else
  71. {
  72. for (int i = 2; i <= n - 1; i++)
  73. {
  74. p = p->next;
  75. }
  76.  
  77. p->value = x;
  78.  
  79. if (n < counter)
  80. {
  81. Queue* temp = p->next;
  82. p->next = temp->next;
  83. delete temp;
  84. }
  85. else
  86. {
  87. Queue* temp = p->next;
  88. p->next = NULL;
  89. delete temp;
  90. }
  91.  
  92. counter--;
  93. }
  94. }
  95.  
  96. int main()
  97. {
  98. short choose = -1;
  99. unsigned int counter = 0;
  100.  
  101. do
  102. {
  103. 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";
  104. cin >> choose;
  105.  
  106. switch (choose)
  107. {
  108. case 1:
  109. {
  110. system("cls");
  111. int n;
  112. cout << "Enter a value: ";
  113. cin >> n;
  114. addValues(n, counter);
  115. break;
  116. }
  117. case 2:
  118. {
  119. system("cls");
  120. if (first)
  121. {
  122. removeValues();
  123. }
  124. else
  125. {
  126. cout << "The queue is empty" << endl;
  127. }
  128. break;
  129. }
  130. case 3:
  131. {
  132. system("cls");
  133. if (first)
  134. {
  135. printValues();
  136. }
  137. else
  138. {
  139. cout << "The queue is empty" << endl;
  140. }
  141. break;
  142. }
  143. case 4:
  144. {
  145. system("cls");
  146. if (first)
  147. {
  148. int n, x;
  149. do
  150. {
  151. cout << "Enter a number of element to remove" << "[" << counter << "-2]: ";
  152. cin >> n;
  153. } while (n < 2 || n > counter);
  154.  
  155. cout << "Enter a new value: ";
  156. cin >> x;
  157.  
  158. removeNAndChange(n, x, counter);
  159. }
  160. else
  161. {
  162. cout << "The queue is empty" << endl;
  163. }
  164. break;
  165. }
  166. default:
  167. break;
  168. }
  169.  
  170. } while (choose < 0 || choose > 4);
  171.  
  172. return 0;
  173. }
  174.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement