Lbach Posté(e) le 19 novembre 2010 Partager Posté(e) le 19 novembre 2010 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 More sharing options...
fabien29200 Posté(e) le 20 novembre 2010 Partager Posté(e) le 20 novembre 2010 Salut ! Une thread qui empile et une thread qui dépile ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lbach Posté(e) le 20 novembre 2010 Auteur Partager Posté(e) le 20 novembre 2010 Bonjour, j'utilise pas de methode abstraite dans mon code! je suis encore débutant donc c'est du Java de base! en fait c'est une Pile à partir de 2 files Lien vers le commentaire Partager sur d’autres sites More sharing options...
uzak Posté(e) le 22 novembre 2010 Partager Posté(e) le 22 novembre 2010 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 More sharing options...
fabien29200 Posté(e) le 23 novembre 2010 Partager Posté(e) le 23 novembre 2010 Bah à ma connaissance pile = FILO. Auquel cas, nul besoin de deux files ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
uzak Posté(e) le 24 novembre 2010 Partager Posté(e) le 24 novembre 2010 Ben, si tu push dans cet ordre 1 2 3 4 5, avec la file, tu pop le 1, avec la pile tu pop le 5. Si tu prends qu'une seule file pour implémenter ta pile, t'en fais quoi des 1 2 3 4 qu'il faut popper avant d'arriver au 5 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Charles.w Posté(e) le 7 décembre 2010 Partager Posté(e) le 7 décembre 2010 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.