I need to write arrayImpOfStack.java then write a main method to read a sequence of numbers and using the stack operation print them in reverse order
How to reverse number in output ?
I have 2 class
class 1
JavaScript
x
class stackAr
{
int elements [];
int top; // is the index of the cell containing the last elements added to the stack.
stackAr(int maxlength) {top = maxlength; elements = new int[maxlength]; };
// initially the value of the variable top = maxlength which means the stack is empty
// So the variable top must be decremented before pushing new element, which means
// the first element is pushed at cell numbered maxlength-1
// the second element is pushed at the cell numbered maxlength-2
// the third element is pushed at the cell numbered maxlength-3
// an so on the stack is full when top = 0
void push(int x)
{ if (top == 0) System.out.println("the Stack is Full ");
else elements[--top] = x;
}
Boolean isEmpty() // Note the stack is empty when top = elements.length which is the maxlength
{
if (top == elements.length) return true; else return false;
}
void pop() // pop increment the variable top to ignore the last element added to the stack
{
if (!isEmpty()) top++ ;
else System.out.println("Stack is Empty ");
}
int Top() // return the last element added to the stack
{if (!isEmpty()) return elements[top];
else {System.out.println("Stack is Empty "); return top;}
}
void MakeNull() {top = elements.length;} // make the stack empty
}
and i have class main
JavaScript
public static void main(String[] args) {
stackAr s = new stackAr(20);
s.push(1);
s.push(9);
s.push(2);
s.push(10);
while(!s.isEmpty())
{
System.out.println(s.Top());
s.pop();
}
Advertisement
Answer
You can do it recursively:
JavaScript
public static void printStackInReverse(stackAr s){
if(!s.isEmpty()){
int e = s.Top();
s.pop();
printStackInReverse(s);
System.out.println(e);
s.push(e);
}
}
In your case:
JavaScript
public static void main(String[] args) {
stackAr s = new stackAr(20);
s.push(1);
s.push(9);
s.push(2);
s.push(10);
printStackInReverse(s);
}
Full Example:
JavaScript
class stackAr
{
int elements [];
int top; // is the index of the cell containing the last elements added to the stack.
stackAr(int maxlength) {top = maxlength; elements = new int[maxlength]; };
void push(int x)
{ if (top == 0) System.out.println("the Stack is Full ");
else elements[--top] = x;
}
Boolean isEmpty() // Note the stack is empty when top = elements.length which is the maxlength
{
return top == elements.length;
}
void pop() // pop increment the variable top to ignore the last element added to the stack
{
if (!isEmpty()) top++ ;
else System.out.println("Stack is Empty ");
}
int Top() // return the last element added to the stack
{if (!isEmpty()) return elements[top];
else {System.out.println("Stack is Empty "); return top;}
}
void MakeNull() {top = elements.length;} // make the stack empty
public static void printStackInReverse(stackAr s){
if(!s.isEmpty()){
int e = s.Top();
s.pop();
printStackInReverse(s);
System.out.println(e);
s.push(e);
}
}
public static void main(String[] args) {
stackAr s = new stackAr(20);
s.push(1);
s.push(9);
s.push(2);
s.push(10);
printStackInReverse(s);
}
}