Aller au contenu

[JAVA] Aide programmation java


Lbach

Messages recommandés

Bonsoir à tous!

je suis en pleine préparation pour mon exam,la j'essaye de faire un exercice j'aimerai bien que quelqu'un vérifie si mon code est bon ou pas,il s'agit d'une file et d'une pile en Java.

en fait la ou je bloque c'est au niveau de la pile,je dois faire une pile à partir de deux files,j'ai déja codé la file,mais la pile je sais pas trop par ou commencer.

si y'en a qui veulent bien m'aider je leur envoie mon code ainsi que le sujet pour mieux comprendre

Merci d'avance!

Lien vers le commentaire
Partager sur d’autres sites

Salut !

Envoie toujours le sujet et ton code, ça nous permettra de nous faire une idée.

Le coup de faire une pile avec deux files, je vois pas trop comment faire à part faire une espèce de file circulaire où chaque élément est défilé dans l'autre file jusqu'à trouver l'élément qu'on veut dépiler....

Puis fais voir ton code aussi, on pourra toujours te dire si il fait ce qu'il faut sans planter

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Je te laisse trouver l'autre solution...là je dépile dans q1...mais on peut aussi empiler dans q1...le choix de l'une ou l'autre solution dépends de l'opération que tu veux privilégier push() ou pop() ;)

package stackusing2queues;

import java.util.LinkedList;
import java.util.Queue;

public class StackUsingTwoQueues1<E> {

   private Queue<E> q1 = new LinkedList<E>();
   private Queue<E> q2 = new LinkedList<E>();

   public void push(E object) {
       q2.add(object);

       while (! q1.isEmpty()) {
           q2.add(q1.remove());
       }

       //On peut intervertir q1 et q2 à l'aide d'une troisième file q3, mais cela n'est pas autorisé par l'énoncé que tu donnes
       while (! q2.isEmpty()) {
           q1.add(q2.remove());
       }
   }

   public E pop() {
       return q1.remove();
   }

   public boolean isEmpty() {
       return (q1.peek() == null);
   }
}

Et le code pour faire un test rapide de visu :

package stackusing2queues;

import java.util.Random;
import java.util.Stack;


public class Main {

   private static final int STACK_SIZE = 20;

   public static void main(String[] args) {

       Stack<Integer> s1 = new Stack<Integer>();
       StackUsingTwoQueues1<Integer> s2 = new StackUsingTwoQueues1<Integer>();

       Random randomGenerator = new Random();
       for (int i = 0 ; i < STACK_SIZE ; i++) {
           int rand = randomGenerator.nextInt(100);
           s1.push(rand);
           s2.push(rand);
       }

       for (int i = 0 ; i < STACK_SIZE ; i++) {
           System.out.println("(s1)" + i + " = " + s1.pop() + " ; empty = " + s1.isEmpty());
           System.out.println("(s2)" + i + " = " + s2.pop() + " ; empty = " + s2.isEmpty());
           System.out.println("\n");
       }
   }

}

Note : c'est pas du tout thread safe, ni très safe tout court en fait, mais je crois que ce n'est pas le but de l'exercice :dd:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...