Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Sstack
- {
- int key;
- Sstack* next;
- }*start = NULL;
- struct Pstack
- {
- int key;
- Pstack* next;
- }*start2 = NULL;
- void addElement(unsigned int& countOfNumber)
- {
- Sstack* s;
- s = start;
- int Snum;
- do
- {
- cout << "Enter Positive Number: ";
- cin >> Snum;
- } while (Snum < 0);
- start = new Sstack;
- start->key = Snum;
- start->next = s;
- countOfNumber++;
- cout << "Element added" << endl;
- cout << endl;
- }
- void removeElement(bool isP)
- {
- if (isP) {
- while (start2)
- {
- Pstack* s = start2;
- bool isLast = false;
- do
- {
- if (!s->next) {
- isLast = true;
- break;
- }
- if (s->next != start2) {
- s = s->next;
- }
- } while (s->next != start2);
- if (isLast)
- {
- start2 = NULL;
- delete s;
- }
- else {
- start2 = s;
- delete s;
- }
- }
- }
- else {
- while (start)
- {
- Sstack* s = start;
- bool isLast = false;
- do
- {
- if (!s->next) {
- isLast = true;
- break;
- }
- if (s->next != start) {
- s = s->next;
- }
- } while (s->next != start);
- if (isLast)
- {
- start = NULL;
- delete s;
- }
- else {
- start = s;
- delete s;
- start->next = NULL;
- }
- }
- cout << "Element/s removed\n";
- }
- }
- void printElements()
- {
- Sstack* s = start;
- while (s)
- {
- cout << s->key << " ";
- s = s->next;
- }
- cout << endl;
- }
- void sortElementInPStack(unsigned int countOfNumber)
- {
- int* numberInStack = new int(countOfNumber);
- Sstack* s = start;
- unsigned int current;
- int count = -1;
- /*for (int i = 1; i < countOfNumber; i++)
- {
- unsigned int step = 0;
- for (int j = 0; j < i; j++) {
- if (numberInStack[j] < s->key)
- {
- step++;
- }
- else {
- break;
- }
- }
- if (step > 0) {
- if (step == i - 1) {
- numberInStack[i] = s->key;
- }
- else {
- for (int j = i; j > step; j--) {
- numberInStack[j] = numberInStack[j - 1];
- }
- numberInStack[step] = s->key;
- }
- }
- else {
- for (int j = 1; j <= i; j++) {
- numberInStack[j] = numberInStack[j - 1];
- cout << numberInStack[j] << " ";
- }
- numberInStack[0] = s->key;
- }
- s = s->next;
- }*/
- for (int i = 0; i < countOfNumber; i++)
- {
- numberInStack[i] = s->key;
- s = s->next;
- }
- for (int i = 0; i < countOfNumber; i++)
- {
- for (int j = 0; j < countOfNumber; j++)
- {
- if (j > i && i != 0 || i != j && i == 0)
- {
- if (numberInStack[i] > numberInStack[j])
- {
- count = j;
- }
- }
- }
- if (count > -1) {
- current = numberInStack[count];
- numberInStack[count] = numberInStack[i];
- numberInStack[i] = current;
- count = -1;
- i--;
- }
- }
- removeElement(true);
- Pstack* p = start2;
- for (int i = 0; i < countOfNumber; i++)
- {
- start2 = new Pstack;
- start2->key = numberInStack[i];
- start2->next = p;
- p = start2;
- }
- while (p)
- {
- cout << p->key << " ";
- p = p->next;
- }
- numberInStack = NULL;
- delete[] numberInStack;
- cout << endl;
- }
- int main()
- {
- short choice;
- unsigned int countOfNumber = 0;
- do
- {
- cout << "[1] Add element\n[2] Remove element \n[3] Print elements\n[4] Sort by descending order\n[0] Exit\n";
- cin >> choice;
- switch (choice)
- {
- case 1:
- system("cls");
- addElement(countOfNumber);
- choice = -1;
- break;
- case 2:
- system("cls");
- if (!start) {
- cout << "No elements to remove\n";
- }
- else {
- removeElement(false);
- }
- choice = -1;
- break;
- case 3:
- system("cls");
- if (!start) {
- cout << "No elements to print\n";
- }
- else {
- printElements();
- }
- choice = -1;
- break;
- case 4:
- system("cls");
- if (!start) {
- cout << "No elements to sort\n";
- }
- else {
- if (countOfNumber > 1) {
- sortElementInPStack(countOfNumber);
- }
- else {
- cout << "Only one element\n";
- }
- }
- choice = -1;
- break;
- default:
- break;
- }
- } while (choice < 0 || choice > 4);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement