Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mayankgupta804/c207d0830c3c660048ee341933c59fad to your computer and use it in GitHub Desktop.
Save mayankgupta804/c207d0830c3c660048ee341933c59fad to your computer and use it in GitHub Desktop.
An object oriented implementation of stack using arrays in C++.
// Stack - Object oriented implementation using arrays
#include <iostream>
using namespace std;
#define MAX_SIZE 101
class Stack
{
private:
int A[MAX_SIZE]; // array to store the stack
int top; // variable to mark the top index of stack.
public:
// constructor
Stack()
{
top = -1; // for empty array, set top = -1
}
// Push operation to insert an element on top of stack.
void Push(int x)
{
if(top == MAX_SIZE -1) { // overflow case.
cout<<"Error: stack overflow<<endl;
return;
}
A[++top] = x;
}
// Pop operation to remove an element from top of stack.
void Pop()
{
if(top == -1) { // If stack is empty, pop should throw error.
cout<<"Error: No element to pop"<<endl;
return;
}
top--;
}
// Top operation to return element at top of stack.
int Top()
{
return A[top];
}
// This function will return 1 (true) if stack is empty, 0 (false) otherwise
int IsEmpty()
{
if(top == -1) return 1;
return 0;
}
// ONLY FOR TESTING - NOT A VALID OPERATION WITH STACK
// This function is just to test the implementation of stack.
// This will print all the elements in the stack at any stage.
void Print() {
int i;
cout<<"Stack: ";
for(i = 0;i<=top;i++)
cout<<A[i];
cout<<endl;
}
};
int main()
{
// Code to test the implementation.
// calling Print() after each push or pop to see the state of stack.
Stack S;
S.Push(2);S.Print();
S.Push(5);S.Print();
S.Push(10);S.Print();
S.Pop();S.Print();
S.Push(12);S.Print();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment