Skip to content

Instantly share code, notes, and snippets.

@Panchatcharam
Created February 19, 2017 15:03
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 Panchatcharam/bce3e1cbc38f870cab93458276f02a2b to your computer and use it in GitHub Desktop.
Save Panchatcharam/bce3e1cbc38f870cab93458276f02a2b to your computer and use it in GitHub Desktop.
Stack implemented using C++ template
#include <iostream>
using namespace std;
// Class Stack with default parameter
template<typename T, int N=10>
class Stack
{
public:
Stack();
~Stack();
void Push(T data);
T Pop();
private:
T *Data;
int count;
};
// Constructor
template<typename T, int N>
Stack<T,N>::Stack()
{
Data = new T[N];
count = 0;
}
// Destructor
template<typename T, int N>
Stack<T,N>::~Stack()
{
delete [] Data;
}
// Method to push data
template<typename T, int N>
void Stack<T,N>::Push(T data)
{
if (count < N)
{
Data[count++] = data;
}
else
{
cout<<"\n stack Overflow!!!"<<endl;
}
}
// Methos to pop data
template<typename T, int N>
T Stack<T,N>::Pop()
{
if (count > 0)
{
return Data[--count];
}
else
{
cout<<"\n stack is Empty"<<endl;
}
}
int main()
{
Stack<int,5> stack;
Stack<int> stack1;
stack.Push(10);
stack.Push(20);
stack.Push(70);
stack.Push(50);
stack.Push(40);
cout<<stack.Pop()<<endl;
cout<<stack.Pop()<<endl;
cout<<stack.Pop()<<endl;
cout<<stack.Pop()<<endl;
cout<<stack.Pop()<<endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment