2

I am attempting to reverse an array using a stack. However, I get an error on arr[i] = stack.top();, and the suggestion to resolve it in Eclipse is to change it to arr[i] = stack.pop(); or to add a cast. Is there another way about this or have I made a mistake?

I see tutorials and questions asking about how to reverse a string using a stack and I have tried to reverse an array using the same logic, but I'm not entirely sure where I'm going wrong.

public static void reverse(String[] arr){ 

    Stack stack = new Stack();

    for(int i = 0; i < arr.length; i++) {           
        stack.push(arr[i]);

    }
    for(int i = 0; i < arr.length; i++) {
        arr[i] = stack.top();
        stack.pop();     
    }
    return;
} 
0

4 Answers 4

4

When you pop the stack, it returns the object at the top and removes it from the stack. Try this:

public static void reverse(String[] arr){ 

    Stack stack = new Stack();    

    for(int i = 0; i < arr.length; i++) {           
        stack.push(arr[i]);

    }
     for(int i = 0; i <arr.length;i++) {

         arr[i] = stack.pop();    
     }
} 
Sign up to request clarification or add additional context in comments.

Comments

0

Method top doesn't exist in the Stack of Java. The similar method you're looking for is peek. Take a look at http://docs.oracle.com/javase/7/docs/api/java/util/Stack.html

However, you can use only pop, because it returns the removed object.

Comments

0

Reverse int array using stack

static int[] reverseArray(int[] arr) {
Stack < String > stack = new Stack();
int len = arr.length;
String[] strArr = new String[len];


for (int i = 0; i < arr.length; i++) {
    strArr[i] = String.valueOf(arr[i]);
    stack.push(strArr[i]);
}
for (int i = 0; i < strArr.length; i++) {
    strArr[i] = stack.pop();
    arr[i] = Integer.parseInt(strArr[i]);
}
return arr;

}

Comments

0
import java.util.Arrays;
import java.util.Stack;

public class reverse {
    public static void main(String[]args){
        Integer arr[] = {3,5,6,8};
        Stack<Integer> st = new Stack<>();
        for(int i =0;i<arr.length;i++){
            st.push(arr[i]);
        }
        for(int i =0;i<arr.length;i++){
            arr[i]=st.peek();
            st.pop();
        }
        System.out.println(Arrays.toString(arr));

    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.