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 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告