J'utilise arraylist pour implémenter une file d'attente. Tout va bien, sauf quand j'essaie de trouver la valeur minimale de la file d'attente, cela ne fonctionne pas correctement et les fonctions dequeue et peek pour une raison quelconque ne fonctionnent pas comme prévu. J'ai essayé de passer par la ligne par ligne, mais je ne comprends pas ce qui va mal dans la fonction min():Java: Vous n'arrivez pas à trouver la valeur minimale d'une file d'attente?
public class queuePractice {
static ArrayList<Integer>nums = new ArrayList<Integer>();
static int top = -1;
public static void main(String[] args) {
enqueue(5);
enqueue(2);
enqueue(6);
enqueue(3);
enqueue(12);
enqueue(1);
enqueue(20);
System.out.println("The min is: " + min());
}
public static int peek() {
return nums.get(0);
}
public static void enqueue(int x) {
nums.add(++top, x);
}
public static int dequeue() {
top--;
return nums.remove(0);
}
public static void display() {
for(int x = 0; x <=top; x++) {
System.out.print(nums.get(x) + " ");
}
System.out.println();
}
public static boolean isEmpty() {
return top==-1;
}
public static int min() {
int min = Integer.MAX_VALUE;
while(min > peek()) {
min = peek();
dequeue();
}
return min;
}
}
La fonction PEEK revient sans cesse 2 reprises, même si je change la boucle while à un pour la boucle. Pour une raison quelconque, il ne met pas à jour sa valeur à chaque fois que je l'efface? Mais en parcourant ligne par ligne je ne peux pas comprendre ce qui ne va pas.
Ah je vois maintenant. La déclaration min> peek l'a fait tourner en rond. – hse23
ou demi-cercles de toute façon –