Maison >Java >javaDidacticiel >Programme Java pour trouver les éléments supérieur et inférieur d'une pile donnée
Ce tutoriel expliquera comment utiliser Java pour trouver les éléments supérieurs et inférieurs d'une pile donnée.
La pilerepré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èmemé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
sortie
<code class="language-java">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); } }</code>
<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:
<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
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!