Inside This blog. |
Definition |
Operations |
Implementation in c++ |
Implementation in Python |
Implementation in Javascript |
Definition
stack is a linear data type.
Operations
push()
pop()
isEmpty()
isFull()
peek()
size()
Implementation in C++
// Basic class implememtation in c++ for only int datatype.
#include <iostream>
#define max 10
using namespace std;
class stack{
private:
int arr[max];
int top =-1;
public:
bool isEmpty(){
if(top == -1){
return true;
}
else{
return false;
}
};
bool isFull(){
if(top == max-1){
return true;
}
else{
return false;
}
};
void push(int value){
if(isFull()){
cout<<"\"stack is full\""<<endl;
}
else{
top++;
arr[top] = value;
}
};
void pop(){
if(isEmpty()){
cout<<"\"stack is empty\""<<endl;
}
else{
top--;
}
};
int peek(){
if(isEmpty()){
return 0;
}
return arr[top];
};
int size(){
return top+1;
};
};
int main() {
stack s;
s.push(1);
s.pop();
cout<<s.peek()<<endl;
cout<<s.size()<<endl;
return 0;
};
Note: This is for a basic understanding of stacks in C++. As there are many situations where we need to make a stack for floats or strings we use the template concept in C++. This is shown in the code below.
// With class Template.
#include <iostream>
#define max 10
using namespace std;
template <class T>
class stack{
private:
T arr[max];
int top =-1;
public:
bool isEmpty(){
if(top == -1){
return true;
}
else{
return false;
}
};
bool isFull(){
if(top == max-1){
return true;
}
else{
return false;
}
};
void push(T value){
if(isFull()){
cout<<"\"stack is full\""<<endl;
}
else{
top++;
arr[top] = value;
}
};
void pop(){
if(isEmpty()){
cout<<"\"stack is empty\""<<endl;
}
else{
top--;
}
};
T peek(){
if(isEmpty()){
return 0;
}
return arr[top];
};
int size(){
return top+1;
};
};
int main() {
stack<char> s;
stack<float> s1;
stack<double> s2;
stack<string> s3;
s3.push("learn");
cout<<s3.peek()<<endl;
s2.push(22.222);
cout<<s2.peek()<<endl;
s1.push(22.333);
cout<<s1.peek()<<endl;
s.push('r');
cout<<s.peek()<<endl;
return 0;
};
Implementation in python
class stack:
def __init__(self, size=0):#default size 0
self.size = size #only is stack is fixed size
self.stack=[]
def isEmpty(self):
return len(self.stack) == 0
def isFull(self):
return len(self.stack) == self.size
def push(self, item):
if self.isFull():
print("stack is full")
else:
self.stack.append(item);#add item to last of list
def pop(self):
if self.isEmpty():
print("stack is empty")
else:
self.stack.pop() #delete last element of list
print(self.stack)
def length(self):
return len(self.stack) # length of stack
def peek(self):
return self.stack[-1] #return last element of list
p1 = stack(3)#size of stack is 3
p1.push(2)
p1.push(33)
p1.push(50)
p1.push(30)
p1.push(55)
print(p1.length());
print(p1.peek());
Implementation in Javascript
class stack {
constructor(){
this.arr =[]
}
isEmpty(){
if(this.arr.length === 0){
return true
}
else {
return false
}
}
push(value){
this.arr.push(value);
}
pop(){
if(this.isEmpty()){
console.log("stack is empty")
}
else{
this.arr.pop();
}
}
peek(){
let lastElement=this.arr.length-1;
return this.arr[lastElement];
}
size(){
return this.arr.length
}
}
const s1 = new stack;
const s2 = new stack;
s1.push(11);
s1.pop();
console.log(s1.size());
console.log(s1.peek());