Java 中删除栈的中间元素


为了删除栈的中间元素,首先我们需要移除中间元素上方的元素。移除中间元素后,我们将恢复其上方的元素以保持原始顺序。我们可以使用递归方法来实现这一点,如下所述。

我们不能直接删除栈的中间元素,因为根据栈的特性,我们只能对栈顶进行 push 和 pop 操作。

删除栈的中间元素的步骤

步骤 1:确定中间元素的位置,首先,我们需要确定栈的中间元素,以下是方法:−

  • 如果栈包含 9 个元素(索引 0 到 8),则中间元素位于位置 4。
  • 如果栈包含偶数个元素(例如 4 个元素),则将删除两个中间元素中的第一个。
  • 如果栈仅包含一个元素,则该元素将被视为中间元素并删除。

步骤 2:我们递归地不断移除栈顶元素,直到到达中间元素。

步骤 3:一旦到达中间元素,我们只需将其从栈中弹出,然后重新组装栈到其原始顺序。

程序

以下示例删除栈的中间元素:−

import java.util.Stack;
public class Example {
   public static void deleteMidElement(Stack < Integer > stack, int currentIndex) {
      if (currentIndex == 0) {
         stack.pop();
         return;
      }

      int temp = stack.pop();
      deleteMidElement(stack, currentIndex - 1);
      stack.push(temp);

   }
   public static void main(String args[]) {
      int N;
      Stack <Integer> stack = new Stack < >
      ();
      stack.push(9);
      stack.push(10);
      stack.push(0);
      stack.push(5);
      stack.push(7);
      N = stack.size();
      N = N / 2;

      System.out.println("Stack before deleting middle element: " + stack);
      deleteMidElement(stack, N);
      System.out.println("Stack after deleting middle element: " + stack);
   }
}

以下是上述程序的输出:−

Stack before deleting middle element: [9, 10, 0, 5, 7]
Stack after deleting middle element: [9, 10, 5, 7]

解释

在 main 方法中,我们使用栈和中间元素的索引作为参数调用了 deleteMidElement() 方法。

deleteMidElement() 方法中,我们检查 currentIndex 是否等于 0,如果为真,则栈顶是中间元素,否则,栈顶存储在一个变量中,并递归调用 deleteMidElement,每次递减 currentIndex,然后将存储的元素压回栈中。

更新于: 2024年11月1日

54 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告