Skip to content

Commit

Permalink
Building dynamic stacks in java
Browse files Browse the repository at this point in the history
  • Loading branch information
suhanigupta23 authored Feb 20, 2024
1 parent c41fbdf commit 201c014
Showing 1 changed file with 112 additions and 0 deletions.
112 changes: 112 additions & 0 deletions building_dynamic_stacks.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
//HERE WE BUIKLD OUR OWN DYNAMIC STACK JUST LIKE DYNAMIC ARRAY WHERE WE DO NOT HAVE ANY LIMITATION IF SIZE OF THE STACK
import java.io.*;
import java.util.*;

public class Main {

public static class CustomStack {
int[] data;
int tos;
//tos taken to recieve the data tos++ and the d[tos]=value

public CustomStack(int cap) {
data = new int[cap];
tos = -1;

}

int size() {
return tos+1;

}

void display() {
for(int i=tos;i>0;i--)
{
System.out.print(data[i]+" ");
}

System.out.println();

}

void push(int val) {
if(tos==data.length-1)
{
int [] ndata=new int[2*data.length];
// a new data stack made of the double size of the previous data stack
for(int i=0;i<data.length;i++)
{
ndata[i]= data[i];
//the old data stack copied to the new data stack
}
data=ndata;
tos++;
data[tos]=val;
}
else
{
tos++;
data[tos]=val;
}

}

int pop() {
if(tos==-1)
{
System.out.println("Stack underflow.");
return -1;
}
else
{
int val=data[tos];
tos--;
return -1;
}

}

int top() {
if(tos==-1)
{
System.out.println("Stack overflow");
return -1;
}
else
{
int val=data[tos];
return -1;
}
}
}

public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
CustomStack st = new CustomStack(n);

String str = br.readLine();
while(str.equals("quit") == false){
if(str.startsWith("push")){
int val = Integer.parseInt(str.split(" ")[1]);
st.push(val);
} else if(str.startsWith("pop")){
int val = st.pop();
if(val != -1){
System.out.println(val);
}
} else if(str.startsWith("top")){
int val = st.top();
if(val != -1){
System.out.println(val);
}
} else if(str.startsWith("size")){
System.out.println(st.size());
} else if(str.startsWith("display")){
st.display();
}
str = br.readLine();
}
}
}

0 comments on commit 201c014

Please sign in to comment.