begin process at 2012 02 13 04:54:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Au secours

 > 

Problème liste chaînée


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème liste chaînée

lundi 20 février 2006 à 14:36:33 | Problème liste chaînée

hoymille

Bonjour,

En fait j'ai réaliser une interface pour créer des organigrammes. Maintenant, je veux créer une liste chaînée afin de pouvoir avoir une structure qui me donnera l'ordre de chaque instruction à exécuter de l'organigramme. Le problème, c'est aussi d'une condition (losange) où il y a une branche "oui" et une branche "non". Je ne sais pas comment traiter ce cas dans ma liste chaînée. Chaque maillon de ma liste chaînée possède trois champs :
      -> Géométrie
      -> Graphe : suivantOui
      -> Graphe : suivantNon
suivantNon est toujours mis à null sauf quand on a une condition (losange), donc il ne pointe sur rien (sauf pour losange). Je ne sais pas comment faire dès que j'ai un losange.
Il faut que ce soit récursif car on peut avoir plusieurs conditions à la suite ou dans les branches...


Voici le code de la classe Graphe (pour les maillons) :

public class Graphe {
 
 protected Geometrie g;
 protected Graphe suivantOui;
 protected Graphe suivantNon;
 protected Graphe precedentOui;
 protected Graphe precedentNon;

 // Constructeur par recopie
 public Graphe(Geometrie g) {
  this.g = g;
  this.suivantOui = null;
  this.suivantNon = null;
  this.precedentOui = null;
  this.precedentNon = null;
 }
 
 // Retourne true si il y a un suivantOui à cette géométrie
 public boolean hasSuivantOui() {
  return suivantOui != null;
 }
 
 // Retourne true si il y a un suivantNon à cette géométrie
 public boolean hasSuivantNon() {
  return suivantNon != null;
 }
 
 // Retourne la géométrie
 public Geometrie getElement() {
  return g;
 }
 
 // Retourne l'élément suivantOui
 public Graphe getSuivantOui() {
  return suivantOui;
 }
 
 // Retourne l'élément suivantNon
 public Graphe getSuivantNon() {
  return suivantNon;
 }
 
 // Modifie le lien vers l'élément suivantOui
 public void setSuivantOui(Graphe graphe) {
  suivantOui = graphe;
 }
 
 // Modifie le lien vers l'élément suivantOui
 public void setSuivantNon(Graphe graphe) {
  suivantNon = graphe;
 }
 
 // Retourne l'élément précédentOui
 public Graphe getPrecedentOui() {
  return precedentOui;
 }
 
 // Retourne l'élément précédentNon
 public Graphe getPrecedentNon() {
  return precedentNon;
 }
 
 // Modifie le lien vers l'élément precedentOui
 public void setPrecedentOui(Graphe graphe) {
  precedentOui = graphe;
 }
 
 // Modifie le lien vers l'élément precedentOui
 public void setPrecedentNon(Graphe graphe) {
  precedentNon = graphe;
 }
 
 // Détruit un élément
 public void effacer() {
  g = null;
  suivantOui = null;
  suivantNon = null;
  precedentOui = null;
  precedentNon = null;
 }
 
 // Modifier l'élément de la géométrie
 public void setGeometrie(Geometrie g) {
  this.g = g;
 }
 
}


Voici le code de ma classe Liste (pour la liste chaînée) :

import java.util.*;

public class Liste {

 private Graphe tete;
 private Graphe queue;
 private int taille;
 private Panneau panel;
 
 public Liste(Panneau monPanel) {
  tete = null;
  queue = null;
  taille = 0;
  panel = monPanel;
 }
 
 // Ajouter un élément en fin de liste
    public void insererFin() {
     for (int i = 0; i < panel.getMemoire().getNumFormes(); i++) {
      if (taille == 0) {
       Graphe graphe = new Graphe(panel.getMemoire().getFirstVFormes());
       tete = graphe;
       queue = graphe;
       taille ++;
      } else if (taille >0) {
       if (queue.g.isLosange()) {
         // COMMENT TRAITER SUIVANTNON ????
        Fleche fOui = rechercherFlecheOui(queue.g);
        Graphe grapheOui =  new Graphe(fOui.g2);
        //Fleche fNon = rechercherFlecheNon(queue.g);
        //Graphe grapheNon =  new Graphe(fNon.g2);
        queue.setSuivantOui(grapheOui);
        //queue.setSuivantNon(grapheNon);
        grapheOui.setPrecedentOui(this.queue);
        grapheOui.setPrecedentNon(null);
        queue = grapheOui;
        taille ++;
       } else {
        Fleche f = rechercherFleche(queue.g);
        if (f != null) {
         Graphe graphe =  new Graphe(f.g2);
         queue.setSuivantOui(graphe);
         queue.setSuivantNon(null);
         if (f.g2.isRectangle()) {
          graphe.setPrecedentOui(this.queue);
          graphe.setPrecedentNon(null);
         }
         else if (f.g2.isEllipse()) {
          graphe.setPrecedentOui(this.queue);
          graphe.setPrecedentNon(null);
         }
         else if (f.g2.isLosange()) {
          graphe.setPrecedentOui(this.queue);
          graphe.setPrecedentNon(this.queue);
         }
         queue = graphe;
         taille ++;
        }
       }
      }
     }
    }
         
    // Retourne la flèche dont g est la géométrie de départ de la flèche
 public Fleche rechercherFleche(Geometrie g) {
  Vector vFleches = panel.getMemoire().getVFleches();
  Iterator it = vFleches.iterator();
  while (it.hasNext()) {
   Fleche f = (Fleche) it.next();
   if (f.g1 == g)
    return f;
  }
  return null;
 }
 
 // Retourne la flèche dont g est la géométrie de départ de la flèche
 public Fleche rechercherFlecheOui(Geometrie g) {
  Vector vFleches = panel.getMemoire().getVFleches();
  Iterator it = vFleches.iterator();
  while (it.hasNext()) {
   Fleche f = (Fleche) it.next();
   if (f.g1 == g && f.s == "Oui")
    return f;
  }
  return null;
 }
 
 // Retourne la flèche dont g est la géométrie de départ de la flèche
 public Fleche rechercherFlecheNon(Geometrie g) {
  Vector vFleches = panel.getMemoire().getVFleches();
  Iterator it = vFleches.iterator();
  while (it.hasNext()) {
   Fleche f = (Fleche) it.next();
   if (f.g1 == g && f.s == "Non")
    return f;
  }
  return null;
 }
 
 // Retourne le nombre d'éléments de la liste
 public int getTaille() {
  return taille;
 }
 
 // Retourne true si la liste est vide
 public boolean isEmpty() {
  return taille == 0;
 }
 
 // Afficher chaque instruction de l'organnigramme
 public void afficherOui() {
  Graphe g = tete;
  if (g != null) {
   System.out.println(g.g.s);
   while (g.getSuivantOui() != null) {
    g = g.getSuivantOui();
    System.out.println(g.g.s);
   }
  }
 }
 
}


Merci d'avance pour vos réponses et votre aide.



Cette discussion est classée dans : public, graphe, liste, return, queue


Répondre à ce message

Sujets en rapport avec ce message

les listes chainées [ par foxriver001 ] au fait j'ai implémenté les listes chainées en java mais le programme ne marche pas correctement,j'ai donc besoin de l'aide de quelqu'un .voici le pro Utiliser l'état d'une case à cocher dans une JTable pour faire une requette SQL [ par baratribord ] Bonjour,J'ai écrit un programme qui lit les informations d'une base de données MySql et qui les affichent dans une JTable.A cette JTable j'ai rajouté Utiliser l'état d'une case à cocher dans une JTable pour faire une requette SQL [ par baratribord ] /* j'ai mis également ce message dans la partie débutant ayant repris la programmation après un long moment d'arrêt sans doute ce message est mieux iç JTable- clic sur image [ par thassa ] bonjour,Le code ci-dessous affiche un tableau contenant des images.le problème est que si je clique pour la premiere fois sur l'image pour afficher un salutque fais ce programme java? [ par bluelagoon91 ] salut! est ce que quelqu'un pourrait m'expliquer ce que fait ce progarmme java!merci<img src="/imgs probleme de requete sql [ par luffyst ] bonjour a tous,g besoin de vos connaissances car je débute dans la programmation de java (STRUTS+AJAX+JPA+SPriNG)mon projet est donc de réaliser une a affichage d'un fichier xml dans un table [ par samira46 ] salut, bon j'ai un petit pb et je veux l'aide si vous voulez,bon j'ai un fichier xml et je veux afficher ce fichier dans un table mais l'affichage se probleme de raffraichissement d'image [ par Azdruyel ] Bonjour a tous!Aujourd'hui,un nouveau jour, et donc un nouveau probleme!!!Alors voila, mon truc c'est que j'affiche en fond dans un JPanel une image ( JTable : afficher une Date [ par isako ] Bonjour,Ce sujet n'est pas nouveau dans le forum, mais je n'ai pas trouvé la solution... Je vous soumets mon problème en espérant que l'un de vous pou connection acces +netbeans4 [ par Nollla ] slt j'ai une base de donnee access "moteur" et le j'ai fait le code suivant package Beanspublic class Abonne{final int id_ab;private String nom;privat


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,980 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales