Skip to main content

Single Array to Implement three Stacks ( Program in java )

File: Stack.java
----------------------------------------------------------------------------------------
package org.developersbrain.solutions;

public class Stack {
int[] stackList;
int stackSize;
int s1Pos,s1End,s2Pos,s2End,s3Pos,s3End;
int s1Pop,s2Pop,s3Pop;
Stack(){
stackSize = 15;//Default Array Size
stackList=new int[stackSize];
setStacks();
}

Stack(int stackSize){
this.stackSize=stackSize;
stackList=new int[stackSize];
setStacks();
}

private void setStacks(){
int eachStackSize=stackSize/3;
s1Pop=s1Pos=0;
s1End=eachStackSize-1;
s2Pop=s2Pos=s1End+1;
s2End=s2Pos+eachStackSize-1;
s3Pop=s3Pos=s2End+1;
s3End=s3Pos+eachStackSize;
}

void pushS1Element(int item){
if(s1Pos>s1End){
System.out.println("Stack 1 Out of Memory");
}else{
stackList[s1Pos]=item;
s1Pos++;
}
}

void pushS2Element(int item){
if(s2Pos>s2End){
System.out.println("Stack 2 Out of Memory");
}else{
stackList[s2Pos]=item;
s2Pos++;
}
}

void pushS3Element(int item){
if(s3Pos>s3End){
System.out.println("Stack 3 Out of Memory");
}else{
stackList[s3Pos]=item;
s3Pos++;
}
}

void popS1Element(){
if(s1Pos<s1Pop){
System.out.println("Stack empty!");
s1Pos++;
}else{
System.out.println(stackList[s1Pos-1]);
s1Pos--;
}
}

void popS2Element(){
if(s2Pos<s2Pop){
System.out.println("Stack empty!");
s2Pos++;
}else{
System.out.println(stackList[s2Pos-1]);
s2Pos--;
}
}

void popS3Element(){
if(s3Pos<s3Pop){
System.out.println("Stack empty!");
s3Pos++;
}else{
System.out.println(stackList[s3Pos-1]);
s3Pos--;
}
}



}

File:MainClass.java
---------------------------------------------------------------------
package org.developersbrain.solutions;

public class MainClass {

public static void main(String[] args) {
Stack st=new Stack();
System.out.println("Adding Elements to Stack...");
System.out.println();
st.pushS1Element(10);
st.pushS1Element(11);
st.pushS1Element(12);
st.pushS1Element(13);
st.pushS1Element(14);
st.pushS2Element(1);
st.pushS2Element(2);
st.pushS2Element(3);
st.pushS2Element(4);
st.pushS2Element(5);
st.pushS3Element(6);
st.pushS3Element(7);
st.pushS3Element(8);
st.pushS3Element(9);
st.pushS3Element(10);

System.out.println("Pop Elements ( Last in First Out )");
System.out.println("--------------------------------");
st.popS1Element();
st.popS2Element();
st.popS3Element();

System.out.println();
System.out.println("Now Adding Elements to Stack");
System.out.println();
st.pushS1Element(15);
st.pushS2Element(55);
st.pushS3Element(100);

System.out.println("Pop Elements ( Last in First Out )");
System.out.println("--------------------------------");
st.popS1Element();
st.popS2Element();
st.popS3Element();
}

}

Output:
------------------------------------------------------------------------------------------------

Adding Elements to Stack...

Pop Elements ( Last in First Out )
--------------------------------
14
5
10

Now Adding Elements to Stack

Pop Elements ( Last in First Out )
--------------------------------
15
55
100



Comments

Popular posts from this blog

CODILITY: Determine whether given string of parentheses is properly nested.

Task description A string S consisting of N characters is called  properly nested  if: S is empty; S has the form " (U) " where U is a properly nested string; S has the form " VW " where V and W are properly nested strings. For example, string " (()(())()) " is properly nested but string " ()) " isn't. Write a function: class Solution { public int solution(String S); } that, given a string S consisting of N characters, returns 1 if string S is properly nested and 0 otherwise. For example, given S = " (()(())()) ", the function should return 1 and given S = " ()) ", the function should return 0, as explained above. Assume that: N is an integer within the range [ 0 .. 1,000,000 ]; string S consists only of the characters " ( " and/or " ) ". Complexity: expected worst-case time complexity is O(N); expected worst-case space complexity is O(1) (not counting the storage requi...

Distinct: Compute number of distinct values in an array.

Task description Write a function class Solution { public int solution(int[] A); } that, given a zero-indexed array A consisting of N integers, returns the number of distinct values in array A. Assume that: N is an integer within the range [ 0 .. 100,000 ]; each element of array A is an integer within the range [ −1,000,000 .. 1,000,000 ]. For example, given array A consisting of six elements such that: A[0] = 2 A[1] = 1 A[2] = 1 A[3] = 2 A[4] = 3 A[5] = 1 the function should return 3, because there are 3 distinct values appearing in array A, namely 1, 2 and 3. Complexity: expected worst-case time complexity is O(N*log(N)); expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments). Elements of input arrays can be modified. class Solution { public int solution ( int [] A) { // write your code in Java SE 8 int len=A.length; int count= 1 ; ...

change directory (cd) function for an abstract file system ( Java Implementation )

Write a function that provides change directory (cd) function for an abstract file system. Notes: Root path is '/'. Path separator is '/'. Parent directory is addressable as "..". Directory names consist only of English alphabet letters (A-Z and a-z). For example, new Path("/a/b/c/d").cd("../x").getPath() should return "/a/b/c/x". Note: The evaluation environment uses '\' as the path separator. public class Path {     private String path;     public Path(String path) {         this.path = path;     }     public String getPath() {         return path;     }     public Path cd(String newPath) {         //throw new UnsupportedOperationException("Waiting to be implemented."); String[] newP=newPath.split("/");     String[] oldP=path.split("/");     int lnCount=0;     for(String str:newP){     if(st...