Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- // First task
- struct DequeOfNumbers
- {
- int valueKey;
- DequeOfNumbers* nextElement;
- } *leftInput = NULL, * rightInput = NULL;
- void popElement(short choose, short deleteOption, short countOfDelete)
- {
- DequeOfNumbers* p;
- DequeOfNumbers* p2;
- switch (choose)
- {
- case 1:
- switch (deleteOption)
- {
- case 1:
- for (int i = 0; i < countOfDelete; i++)
- {
- p = leftInput;
- leftInput = leftInput->nextElement;
- delete p;
- if (!leftInput)
- {
- rightInput = NULL;
- break;
- }
- }
- break;
- case 2:
- while (leftInput)
- {
- p = leftInput;
- leftInput = leftInput->nextElement;
- delete p;
- }
- rightInput = NULL;
- break;
- default:
- break;
- }
- break;
- case 2:
- switch (deleteOption)
- {
- case 1:
- for (int i = 0; i < countOfDelete; i++)
- {
- p = rightInput;
- p2 = leftInput;
- bool isLast = false;
- do
- {
- if (!p2->nextElement) {
- isLast = true;
- break;
- }
- if (p2->nextElement != p) {
- p2 = p2->nextElement;
- }
- } while (p2->nextElement != p);
- if (isLast)
- {
- rightInput = NULL;
- leftInput = NULL;
- delete p;
- break;
- }
- else {
- rightInput = p2;
- delete p;
- p2 = rightInput;
- rightInput->nextElement = NULL;
- }
- }
- break;
- case 2:
- while (rightInput)
- {
- p = rightInput;
- p2 = leftInput;
- bool isLast = false;
- do
- {
- if (!p2->nextElement) {
- isLast = true;
- break;
- }
- if (p2->nextElement != p) {
- p2 = p2->nextElement;
- }
- } while (p2->nextElement != p);
- if (isLast)
- {
- rightInput = NULL;
- leftInput = NULL;
- delete p;
- }
- else {
- rightInput = p2;
- delete p;
- p2 = rightInput;
- rightInput->nextElement = NULL;
- }
- }
- break;
- default:
- break;
- }
- break;
- default:
- break;
- }
- }
- void pushNewElement(int n, short choose)
- {
- DequeOfNumbers* p;
- switch (choose)
- {
- case 1:
- p = leftInput;
- leftInput = new DequeOfNumbers;
- leftInput->valueKey = n;
- leftInput->nextElement = p;
- if (!rightInput) {
- rightInput = leftInput;
- }
- break;
- case 2:
- p = rightInput;
- rightInput = new DequeOfNumbers;
- rightInput->valueKey = n;
- rightInput->nextElement = NULL;
- if (!leftInput) {
- leftInput = rightInput;
- }
- else {
- p->nextElement = rightInput;
- }
- default:
- break;
- }
- }
- int getHighestNumber() {
- short choose = -1;
- DequeOfNumbers* p;
- int highestNumber = 0;
- p = leftInput;
- highestNumber = leftInput->valueKey;
- while (p)
- {
- if (p->valueKey > highestNumber)
- {
- highestNumber = p->valueKey;
- }
- p = p->nextElement;
- };
- return highestNumber;
- }
- void getAllNumbers() {
- DequeOfNumbers* p;
- p = leftInput;
- do {
- cout << p->valueKey << " ";
- p = p->nextElement;
- } while (p);
- cout << endl;
- }
- int main()
- {
- short choose = -1;
- short choose2 = -1;
- short deleteOption = -1;
- short countOfDelete = -1;
- do
- {
- cout << "Choose option\n[1] Add integer number\n[2] Remove element\n[3] Get highest number\n[4] Get all numbers\n[0] Exit\n";
- cin >> choose;
- switch (choose)
- {
- case 1:
- system("cls");
- short counterOfAdd;
- int n;
- do
- {
- cout << "Choose option\n[1] Add in LEFT\n[2] Add in RIGHT\n[0] Exit\n";
- cin >> choose2;
- if (choose2 > 0)
- {
- do
- {
- cout << "Enter count of number for add: ";
- cin >> counterOfAdd;
- } while (counterOfAdd < 0);
- cout << endl;
- for (int i = 0; i < counterOfAdd; i++) {
- cout << "Enter value of int: ";
- cin >> n;
- pushNewElement(n, choose2);
- }
- }
- } while (choose2 < 0 || choose2 > 2);
- if (choose2 > 0)
- {
- cout << endl;
- cout << "Number/s added\n";
- }
- else {
- cout << endl;
- cout << "Number/s no added\n";
- }
- choose = -1;
- choose2 = -1;
- break;
- case 2:
- system("cls");
- if (leftInput && rightInput)
- {
- do
- {
- cout << "Choose option\n[1] Remove LEFT\n[2] Remove RIGHT\n[0] Exit\n";
- cin >> choose2;
- if (choose2 > 0)
- {
- do {
- cout << "Choose option\n[1] Count of number for delete \n[2] Remove All\n[0] Exit\n";
- cin >> deleteOption;
- if (deleteOption == 1)
- {
- do
- {
- cout << "Enter count of number for delete: ";
- cin >> countOfDelete;
- } while (countOfDelete < 1);
- }
- } while (deleteOption < 0 || deleteOption > 2);
- popElement(choose2, deleteOption, countOfDelete);
- cout << "Delete element" << endl;
- }
- } while (choose2 < 0 || choose2 > 2);
- }
- else {
- cout << "No number/s to remove\n";
- cout << endl;
- }
- choose = -1;
- choose2 = -1;
- countOfDelete = -1;
- deleteOption = -1;
- break;
- case 3:
- system("cls");
- if (leftInput && rightInput)
- {
- if (leftInput->nextElement) {
- cout << "Highest number is: " << getHighestNumber() << endl;
- cout << endl;
- }
- else {
- cout << "Have only one number" << endl;
- cout << endl;
- }
- }
- else {
- cout << "No number/s to get\n";
- cout << endl;
- }
- choose = -1;
- break;
- case 4:
- system("cls");
- if (leftInput && rightInput)
- {
- getAllNumbers();
- cout << endl;
- }
- else {
- cout << "No number/s to get\n";
- cout << endl;
- }
- choose = -1;
- break;
- default:
- break;
- }
- } while (choose < 0 || choose > 4);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement