C++ Program to implement a Stack

// Program to implement a Stack

#include <cstdio>
#include <iostream>
#include <cstdlib>
using namespace std;

class element {
 public:
 int value;
 element* next;
}; //class element

class stack {
 public:
 int size;
 element* current;

 stack() {
 size=0;
 current=NULL;
 } //default constructor

 bool push(int,element*);
 bool pop();
 bool isEmpty();
 int getStackSize();
 void printStackSize();
 void printStackElements(element*);
 void printStackMenu();
};

bool stack::push(int ele, element* temp) {
 temp = new element;
 if(current == NULL) {
 temp->next = NULL;
 } else {
 temp->next = current;
 }
 temp->value=ele;
 current=temp;
 printf("%d inserted\n\n", ele);
 size++;
 return false;
}

bool stack::pop() {
 if(isEmpty()) {
 cout<<"\nStack is Empty\n";
 return false;
 } else {
 cout << "\n Element To POP :" << current->value;
 cout << "\n Before POP";
 printStackElements(current);
 current = current->next;
 cout << "\n After POP";
 printStackElements(current);
 size = size--;
 }
 return true;
}

bool stack::isEmpty() {
 if(getStackSize()==0)
 return true;

 return false;
}

int stack::getStackSize() {
 return size;
} //returns size of the stack

void stack::printStackSize() {
 cout << "\nThe Size of the Stack:" << size << "\n";
} //print the stack size

void stack::printStackElements(element* base) {
 element* curr2;
 curr2 = base;
 cout << "\n-----\n";
 cout << "STACK\n";
 cout << "-----\n";
 while(curr2 != NULL) {
 cout << " |" << curr2->value<<"|\n";
 curr2 = curr2->next;
 }
} // print the stack

void stack::printStackMenu() {
 cout << "Welcome to Stack \n";
 cout << "1.Push an element\n";
 cout << "2.Pop an element\n";
 cout << "3.Display Stack\n";
 cout << "4.Size Of Stack\n";
 cout << "5.Exit\n";
}

int main() {
 stack st;
 char Option=0;
 int val;
 
 while(1) {
 st.printStackMenu();
 cin >> Option;
 switch(Option) {
 case '1':
 cout << "Enter a Number \n";
 cin >> val;
 st.push(val, st.current);
 break;

 case '2':
 st.pop();
 break;

 case '3':
 st.printStackElements (st.current);
 break;

 case '4':
 st.printStackSize();
 break;

 case '5':
 exit(0);
 break;
 }
 }
 return 0;
}

// aiuto
Advertisements