How to delete the middle element of a stack in Java

2 Answers

0 votes
import java.util.Stack;

public class MyClass {
    private static void deleteMiddleElement(Stack<Character> st, int size, int current) {
    	if (st.empty() || current == size) {
    		return;
    	}
    
    	char el = st.peek();
    	st.pop();
    
    	deleteMiddleElement(st, size, current + 1);
    
    	if (current != size / 2) {
    		st.push(el);
    	}
    }
    public static void main(String args[]) {
        Stack<Character> st = new Stack<Character>();

    	st.push('3');
    	st.push('5');
    	st.push('1');
    	st.push('m');
    	st.push('9');
    	st.push('2');
    	st.push('7');
    
    	deleteMiddleElement(st, st.size(), 0);
    
    	System.out.println(st);
    }
}






/*
run:

[3, 5, 1, 9, 2, 7]

*/

 



answered May 24, 2023 by avibootz
0 votes
import java.util.Stack;

public class DeleteMiddle {

    public static void deleteMiddleElement(Stack<Integer> stack) {
        int k = (stack.size() / 2) + 1;  // 1-based index of middle
        
        deleteKth(stack, k);
    }

    private static void deleteKth(Stack<Integer> stack, int k) {
        if (k == 1) {
            stack.pop();   // remove middle
            return;
        }

        int top = stack.pop();
        deleteKth(stack, k - 1);
        stack.push(top);   // restore elements
    }

    public static void main(String[] args) {
        Stack<Integer> st = new Stack<Integer>();
 
        st.push(1); 
        st.push(2); 
        st.push(3); 
        st.push(4); 
        st.push(5);
        st.push(6);
        st.push(7);

        deleteMiddleElement(st);

        System.out.println(st);  
    }
}


 
/*
run:
 
[1, 2, 3, 5, 6, 7]
 
*/

 



answered Dec 24, 2025 by avibootz
...