Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Queue
- {
- int value;
- Queue* next;
- } *first = NULL, * last = NULL;
- void addValues(unsigned int& counter)
- {
- Queue* p = last;
- int n;
- cout << "Enter a value: ";
- cin >> n;
- last = new Queue;
- last->value = n;
- last->next = NULL;
- if (first == NULL)
- {
- first = last;
- }
- else
- {
- p->next = last;
- }
- counter++;
- }
- void removeValues()
- {
- while (first)
- {
- Queue* p = first;
- first = p->next;
- delete p;
- }
- cout << "The queue is already empty" << endl;
- cout << endl;
- }
- void printValues()
- {
- Queue* p = first;
- while (p != NULL)
- {
- cout << p->value << " ";
- p = p->next;
- }
- cout << endl;
- }
- void removeNAndChange(unsigned int& counter)
- {
- int n;
- int x;
- Queue* p = first;
- do
- {
- cout << "Enter a number of element to remove" << "[" << counter << "-2]: ";
- cin >> n;
- } while (n < 2 || n > counter);
- cout << "Enter a new value: ";
- cin >> x;
- if (n == 2)
- {
- p = p->next;
- first->value = x;
- first->next = p->next;
- delete p;
- counter--;
- }
- else {
- for (int i = 2; i <= n - 1; i++)
- {
- p = p->next;
- }
- p->value = x;
- if (n < counter)
- {
- p->next = p->next->next;
- p = p->next;
- delete p;
- }
- else
- {
- p->next = NULL;
- }
- counter--;
- }
- }
- int main()
- {
- short choose = -1;
- unsigned int counter = 0;
- do
- {
- 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";
- cin >> choose;
- switch (choose)
- {
- case 1:
- system("cls");
- addValues(counter);
- choose = -1;
- break;
- case 2:
- system("cls");
- if (first)
- {
- removeValues();
- }
- else
- {
- cout << "The queue is empty" << endl;
- }
- choose = -1;
- break;
- case 3:
- system("cls");
- if (first)
- {
- printValues();
- }
- else
- {
- cout << "The queue is empty" << endl;
- }
- choose = -1;
- break;
- case 4:
- system("cls");
- if (first)
- {
- removeNAndChange(counter);
- }
- else {
- cout << "The queue is empty" << endl;
- }
- choose = -1;
- break;
- default:
- break;
- }
- } while (choose < 0 || choose > 4);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement