Maison >Java >javaDidacticiel >Supprimer l'élément central d'une pile à Java

Supprimer l'élément central d'une pile à Java

DDD
DDDoriginal
2025-02-07 11:14:11366parcourir

Delete middle element of a stack in Java

Pour supprimer l'élément intermédiaire de la pile, vous devez d'abord supprimer l'élément au-dessus de l'élément intermédiaire. Après avoir retiré les éléments intermédiaires, les éléments au-dessus d'eux doivent être restaurés pour maintenir l'ordre d'origine. Cette opération peut être implémentée à l'aide d'une méthode récursive, comme décrit ci-dessous.

En raison des caractéristiques de la pile, nous ne pouvons effectuer que des opérations de pressage et d'empilement de pile en haut de la pile, nous ne pouvons donc pas supprimer directement les éléments intermédiaires de la pile.

Étape pour supprimer l'élément central de la pile

Étape 1: Déterminez la position de l'élément intermédiaire Tout d'abord, vous devez déterminer l'élément intermédiaire de la pile, la méthode est la suivante:

  • Si la pile contient 9 éléments (index 0 à 8), l'élément intermédiaire est en position 4.
  • Si la pile contient un nombre uniforme d'éléments (par exemple, 4 éléments), supprimez le premier des deux éléments intermédiaires.
  • Si la pile ne contient qu'un seul élément, l'élément sera traité comme un élément intermédiaire et supprimé.

Étape 2: Retirez récursivement l'élément en haut de la pile jusqu'à ce que l'élément intermédiaire soit atteint.

Étape 3: Une fois l'élément intermédiaire atteint, sortez-le simplement de la pile et remontez la pile à son ordre d'origine.

Programme

L'exemple suivant supprime l'élément intermédiaire de la pile:

<code class="language-java">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[]) {
        Stack<integer> stack = new Stack<>();
        stack.push(9);
        stack.push(10);
        stack.push(0);
        stack.push(5);
        stack.push(7);
        int N = stack.size() / 2;

        System.out.println("删除中间元素之前的堆栈: " + stack);
        deleteMidElement(stack, N);
        System.out.println("删除中间元素之后的堆栈: " + stack);
    }
}</integer></integer></code>

La sortie du programme ci-dessus est la suivante:

<code>删除中间元素之前的堆栈: [9, 10, 0, 5, 7]
删除中间元素之后的堆栈: [9, 10, 5, 7]</code>

Explication

Dans la méthode main, nous appelons la méthode deleteMidElement(), les paramètres sont l'index de la pile et des éléments intermédiaires.

Dans la méthode deleteMidElement(), nous vérifions si currentIndex est égal à 0. Si c'est vrai, le haut de la pile est un élément intermédiaire; . deleteMidElement()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn