recherche
MaisonJavajavaDidacticielProgramme Java pour trouver les éléments supérieur et inférieur d'une pile donnée

Java program to find the top and bottom elements of a given stack

Ce tutoriel expliquera comment utiliser Java pour trouver les éléments supérieurs et inférieurs d'une pile donnée.

La pile

représente un ensemble de données linéaire qui suit le principe Last in First Out (lifo) , donc des éléments sont ajoutés et supprimés au même endroit. Nous explorerons davantage deux façons de trouver les éléments supérieurs et inférieurs d'une pile donnée, c'est-à-dire itérer sur et récursivement .

Instruction Problème

Nous obtiendrons un tableau de pile contenant n éléments, et la tâche consiste à trouver les 1er et nième éléments de la pile sans le détruire de quelque manière que ce soit. Par conséquent, nous devons utiliser les

méthodes itératives et les méthodes récursives dans notre pile personnalisée pour garantir que la pile d'origine reste inchangée.

Entrez 1

<code>stack = [5, 10, 15, 20, 25, 30]</code>

Sortie 1

<code>堆栈中的顶部元素是 --> 30
堆栈中的底部元素是 --> 5</code>

Entrez 2

<code>stack = [1000, 2000, 3000, 4000, 5000]</code>

Sortie 2

<code>堆栈元素:5000 4000 3000 2000 1000
底部元素:1000
顶部元素:5000</code>
Méthode d'itération pour trouver les éléments supérieurs et inférieurs

Pour la première méthode, nous définirons un tableau utilisé comme pile, puis définirons l'opération de pile pour récupérer l'élément souhaité par la méthode itérative. Voici les étapes pour trouver les éléments supérieurs et inférieurs d'une pile donnée:

    Initialisez la pile avec une valeur
  • maxsize égale à 6 et réglez le dessus sur -1 (représente un tableau vide). Appuyez sur les éléments 5, 10, 15, 20, 25 et 30 sur l'opération de pile par push (), tout en augmentant la valeur supérieure dans stackArray [top]
  • .
  • Vérifiez si la pile est vide. Ensuite, utilisez peek ()
  • pour trouver l'élément supérieur en retournant StackArray [en haut], car le haut est déjà défini sur le dernier élément du tableau.
  • Enfin, utilisez la fonction inférieure ()
  • pour trouver l'élément inférieur, qui renvoie la valeur de StackArray [0], c'est-à-dire l'élément premier et bottommost dans le tableau de pile.
  • Sortir les valeurs finales et inférieures finales.
  • Exemple
Ce qui suit est un programme Java qui utilise des méthodes itératives pour trouver les éléments supérieurs et inférieurs d'une pile donnée:

sortie

class MyStack {
    private int maxSize;
    private int[] stackArray;
    private int top;
    // 使用MyStack构造函数初始化堆栈
    public MyStack(int size) {
        this.maxSize = size;
        this.stackArray = new int[maxSize];

        // 将Top变量初始化为-1,表示空堆栈
        this.top = -1;
    }
    // 将元素添加到stackArray中
    public void push(int value) {
        if (top < maxSize -1) {
            stackArray[++top] = value;
        } else {
            System.out.println("堆栈已满");
        }
    }
    // 使用peek()查找顶部元素
    public int peek() {
        if (top >= 0) {
            return stackArray[top];
        } else {
            System.out.println("堆栈为空。");
            return -1;
        }
    }
    // 使用bottom()查找堆栈数组中的底部元素(第一个添加的值)
    public int bottom() {
        if (top >= 0) {
            return stackArray[0];
        } else {
            System.out.println("堆栈为空。");
            return -1;
        }
    }
}
public class Main {
    public static void main(String[] args) {
        MyStack stack = new MyStack(6); // 创建大小为6的堆栈
        // 将元素压入堆栈
        stack.push(5);
        stack.push(10);
        stack.push(15);
        stack.push(20);
        stack.push(25);
        stack.push(30);
        // 检索顶部和底部元素
        int topElement = stack.peek();
        int bottomElement = stack.bottom();
        // 打印最终输出
        System.out.println("堆栈中的顶部元素是 --> " + topElement);
        System.out.println("堆栈中的底部元素是 --> " + bottomElement);
    }
}

Complexité temporelle:
<code>堆栈中的顶部元素是 --> 30
堆栈中的底部元素是 --> 5</code>
o (n) pendant la formation de pile (pression), car chaque élément est ajouté à la fin du tableau, et l'indice est incrémenté de 1 à chaque fois jusqu'à la taille n. O (1) pendant les opérations de Peek et Bottom, car il renvoie StackArray [Top] et StackArray [0].

Complexité de l'espace:

o (n), car nous fixons maxsize pour stocker n éléments, proportionnelle à la taille de la pile.

Méthode récursive pour trouver les éléments supérieurs et inférieurs

Dans cette approche, nous utiliserons la récursivité pour trouver les éléments supérieur et inférieur de la pile. La pile est initialisée et formée à l'aide de l'opération push () et extrait récursivement les éléments requis. Voici les étapes pour trouver les éléments supérieurs et inférieurs d'une pile donnée:

  • Initialisez la pile avec maxsize qui est égal à 5 ​​et supérieur à -1.
  • Vérifiez si la taille de la pile ne dépasse pas MaxSize. Utilisez la fonction push () pour pousser chaque valeur entière sur la pile, incrément en haut de 1 et stocker la valeur dans stackArray [haut] .
  • Utilisez la méthode récursive pour trouver l'élément inférieur et définissez l'index actuel sur la valeur supérieure. Ensuite, si l'index est 0, alors stackArray [0] (élément inférieur), sinon la fonction est appelée récursive avec un index décrémentant de 1.
  • Trouvez l'élément supérieur avec un index défini sur 0. Dans le cas de base, si l'index actuel est égal à la valeur supérieure, alors stackArray [top] est renvoyé. Sinon, la fonction est appelée récursivement à l'aide d'un indice incrémenté de 1.
  • imprime récursivement tous les éléments dans stackArray [] , le cas de base est que si l'index est inférieur à 0, la récursivité est arrêtée. Sinon, appelez la fonction et imprimez la valeur entière récursivement avec un index décrémenté de 1.
  • Appelez la fonction principale et imprimez les éléments supérieurs et inférieurs ainsi que la pile entière.
Exemple

Ce qui suit est un programme Java qui utilise une méthode récursive pour trouver les éléments supérieurs et inférieurs d'une pile donnée:

<code>stack = [5, 10, 15, 20, 25, 30]</code>
sortie

<code>堆栈中的顶部元素是 --> 30
堆栈中的底部元素是 --> 5</code>

Complexité temporelle: Le total est O (n), car un élément dépense O (1) dans l'opération push () pendant la formation de pile de la taille n. Dans le pire des cas, les opérations récursives coûtent o (n).

Complexité spatiale: En raison de la pile d'appels récursive, récursivement est O (n). Le tableau lui-même utilise également O (n) pour stocker n éléments.

Conclusion

En bref, les deux méthodes sont applicables à leurs cas respectifs, où la méthode du tableau direct offre un accès à temps constant aux éléments de pile et sa simple implémentation interactive. D'un autre côté, les méthodes récursives fournissent une perspective récursive sur les opérations de pile, ce qui les rend plus généraux et mettant l'accent sur les méthodes algorithmiques. Comprendre ces deux méthodes vous donne les bases de la pile et quand utiliser l'une ou l'autre méthode.

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
Expliquez comment le JVM agit comme un intermédiaire entre le code Java et le système d'exploitation sous-jacent.Expliquez comment le JVM agit comme un intermédiaire entre le code Java et le système d'exploitation sous-jacent.Apr 29, 2025 am 12:23 AM

JVM fonctionne en convertissant le code Java en code machine et en gérant les ressources. 1) Chargement de classe: Chargez le fichier .class en mémoire. 2) Zone de données d'exécution: gérer la zone de mémoire. 3) Moteur d'exécution: interpréter ou compiler les bytecode d'exécution. 4) Interface de la méthode locale: interagir avec le système d'exploitation via JNI.

Expliquez le rôle de la machine virtuelle Java (JVM) dans l'indépendance de la plate-forme de Java.Expliquez le rôle de la machine virtuelle Java (JVM) dans l'indépendance de la plate-forme de Java.Apr 29, 2025 am 12:21 AM

JVM permet à Java de courir sur les plates-formes. 1) JVM charge, valide et exécute Bytecode. 2) Le travail de JVM comprend le chargement des classes, la vérification du bytecode, l'exécution d'interprétation et la gestion de la mémoire. 3) JVM prend en charge les fonctionnalités avancées telles que la charge de classe dynamique et la réflexion.

Quelles étapes prenez-vous pour vous assurer qu'une application Java s'exécute correctement sur différents systèmes d'exploitation?Quelles étapes prenez-vous pour vous assurer qu'une application Java s'exécute correctement sur différents systèmes d'exploitation?Apr 29, 2025 am 12:11 AM

Les applications Java peuvent s'exécuter sur différents systèmes d'exploitation via les étapes suivantes: 1) Utiliser la classe de fichiers ou de chemins pour traiter les chemins de fichier; 2) Définir et obtenir des variables d'environnement via System.getenv (); 3) Utilisez Maven ou Gradle pour gérer les dépendances et tester. Les capacités multiplateforme de Java reposent sur la couche d'abstraction de JVM, mais nécessitent toujours une manipulation manuelle de certaines caractéristiques spécifiques au système d'exploitation.

Y a-t-il des domaines où Java nécessite une configuration ou un réglage spécifique à la plate-forme?Y a-t-il des domaines où Java nécessite une configuration ou un réglage spécifique à la plate-forme?Apr 29, 2025 am 12:11 AM

Java nécessite une configuration et un réglage spécifiques sur différentes plates-formes. 1) Ajustez les paramètres JVM, tels que -XMS et -XMX pour définir la taille du tas. 2) Choisissez la stratégie de collecte des ordures appropriée, telle que parallelGC ou G1GC. 3) Configurez la bibliothèque native pour s'adapter à différentes plates-formes. Ces mesures peuvent permettre aux applications Java de fonctionner le mieux dans divers environnements.

Quels sont les outils ou les bibliothèques qui peuvent vous aider à relever les défis spécifiques à la plate-forme dans le développement de Java?Quels sont les outils ou les bibliothèques qui peuvent vous aider à relever les défis spécifiques à la plate-forme dans le développement de Java?Apr 29, 2025 am 12:01 AM

OSGI, apachecommonslang, JNA, etjvmoptionsaReeffectiveforHandlingPlatform-spécificchallengesinjava.1) OSGIMANAGESDENDENCESSALDSOLATES COMPOST

Comment le JVM gère-t-il la collection des ordures sur différentes plates-formes?Comment le JVM gère-t-il la collection des ordures sur différentes plates-formes?Apr 28, 2025 am 12:23 AM

JvmManagesgarBageCollectionACROSSPLATFORMSEFFECTIVELYBUSEUSAGENERATIONSPROACHANDADAPTINGTOOSANDHARDWAREDIFFERENCES.ITEPLOCHESSVARIEDSCOLLECTORSELESEERIAL, parallèle, CMS, etg1, chacun

Pourquoi le code Java peut-il fonctionner sur différents systèmes d'exploitation sans modification?Pourquoi le code Java peut-il fonctionner sur différents systèmes d'exploitation sans modification?Apr 28, 2025 am 12:14 AM

Le code Java peut fonctionner sur différents systèmes d'exploitation sans modification, car la philosophie "écrire une fois, exécuter partout" de Java est implémentée par Java Virtual Machine (JVM). En tant qu'intermédiaire entre le bytecode Java compilé et le système d'exploitation, le JVM traduit le bytecode en instructions de machine spécifiques pour s'assurer que le programme peut s'exécuter indépendamment sur n'importe quelle plate-forme avec JVM installé.

Décrivez le processus de compilation et d'exécution d'un programme Java, mettant en évidence l'indépendance de la plate-forme.Décrivez le processus de compilation et d'exécution d'un programme Java, mettant en évidence l'indépendance de la plate-forme.Apr 28, 2025 am 12:08 AM

La compilation et l'exécution des programmes Java réalisent l'indépendance de la plate-forme via ByteCode et JVM. 1) Écrivez le code source Java et compilez-le en bytecode. 2) Utilisez JVM pour exécuter ByteCode sur n'importe quelle plate-forme pour vous assurer que le code s'exécute sur les plates-formes.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel