Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Liste chaînée et méthodes


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Liste chaînée et méthodes
    Bonjour,

    Je ne parviens pas à résoudre mes méthodes : chercher, eniem et snoc.

    Merci d'avance pour vos retours.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    class Cellule {
      public int valeur;
      public Cellule suivant;
     
      Cellule(int _valeur)
      {
        valeur = _valeur;
        suivant = null;
      }
    }
    class ListeChaineeL1
    {
      public Cellule tete;
      ListeChaineeL1()
      {
        tete = null;
      }
      public boolean Empty ()
      {
        if (tete == null)
        return true;
        else
        return false;
      }
      public int Head ()
      {
        if (Empty ())
        return -1;
        else
        return tete.valeur;
      }
      public Cellule Tail () {
        if (Empty ())
        return null;
        else
        return tete.suivant;
      }
      public boolean Cons (int e)
      {
      if(e>=0)
      {
        Cellule tmp = new Cellule (e);
        tmp.suivant = tete;
        tete=tmp;
        return true;
      }
      else{
        return false;
      }
      }
    	public int longueur() {
                    Cellule current = tete;
                    int longueur = 0;
                    while (tete!=null){
    			tete = tete.suivant;
                            longueur ++;
    		}
    		return longueur;
    	}
      	public boolean chercher(ListeChaineeL1 listeX, int element) {
    		boolean retour = false;
    		if (listeX != null)
    			if (listeX.head() == element)
    				return true;
    			  else
    				Cellule nextCellule = listeX.tail();
    				while (!retour && nextCellule != null) {
    					if (nextCellule.valeur == element)
    				return true;
    				else
    				nextCellule = nextCellule.NextCellule();
    				}
    		return retour;
    	}
    	public static int nieme(ListeChaineeL1 listeX, int position) {
    		if (position == 1) {
    			return listeX.head();
    		} else {
    			return ListeChaineeL1.nieme(listeX, position - 1);
    		}
      }
      public static void snoc(ListeChaineeL1 listeX, int cellule) {
    		cellule nextCellule = listeX.tail();
    		while (nextCellule != null) {
    			nextCellule = nextCellule.NextCellule();
    		}
    		ListeChaineeL1 nouvelle = new ListeChaineeL1();
    		nouvelle.cons(cellule);
    		return;
    	}
     
      	public void afficher() {
     		Cellule cellule = tete;
    		while (cellule != null ) {
     
    			System.out.println(", " +cellule);
    			cellule = cellule.suivant;
    		}
     	}
    }

  2. #2
    Membre confirmé
    Bonjour,

    Il y a tellement de soucis dans ton code que j'ai du mal à savoir par quoi commencer.
    Sans même parler des méthodes sur lesquelles tu dis avoir des problèmes (il y en a tellement d'autres avant d'arriver à celles-ci) :
    1. Ta nomenclature est... anarchique. Des majuscules sur les noms de méthodes à leur déclaration mais pas après (ton code, tel que tu le présentes, ne peut pas compiler). Des noms en anglais parfois, en français à d'autres occasions (fait un chois STP).
    2. Ton indentation n'est pas mieux. C'est déjà pas facile de lire le code d'un autre, ne nous rends pas la tâche plus ardue.
    3. Tu déclares des variables d'instance en public (ce qui est absolument à éviter)
    4. Head() et Tail() (ou head() et tail() ?) ont des noms similaires mais font des choses différentes (et Tail() donne le deuxième élément de la liste, pas le dernier).
    5. longueur() vide ta liste !!!


    J'ai l'impression que tu as récupéré le code d'une autre personne sans le comprendre.
    Résout tes soucis, réexamine ton code et peut être qu'on pourra faire quelque chose.
    Merci d'ajouter un sur les tags qui vous ont aidé

  3. #3
    Nouveau membre du Club
    Citation Envoyé par Kazh Du Voir le message

    [*]Head() et Tail() (ou head() et tail() ?) ont des noms similaires mais font des choses différentes (et Tail() donne le deuxième élément de la liste, pas le dernier).
    J'ai l'impression que tu as récupéré le code d'une autre personne sans le comprendre.
    Résout tes soucis, réexamine ton code et peut être qu'on pourra faire quelque chose.
    Merci pour ton retour.

    Les méthodes sont ainsi nommées dans le cours : Empty, Head, Tail, Cons, Longueur, Chercher et Nieme.
    Concernant les méthodes Empty, Head, Tail et Cons, il suffisait de recopier le cours.
    Pour les dernières, je me suis effectivement appuyé sur un autre code.

  4. #4
    Membre confirmé
    Citation Envoyé par steph-0329 Voir le message
    Concernant les méthodes Empty, Head, Tail et Cons, il suffisait de recopier le cours.
    Je ne voudrais pas de ton prof dans mon équipe
    Merci d'ajouter un sur les tags qui vous ont aidé

  5. #5
    Nouveau membre du Club
    Citation Envoyé par Kazh Du Voir le message
    Je ne voudrais pas de ton prof dans mon équipe
    lol

    Pour la seconde partie de l'exercice je n'ai conservé que les méthodes qui fonctionnent...
    J'ai instancié 2 Listes Chaînées.
    J'essaye d'ajouter une valeur.
    Evidemment je n'y arrive pas.
    Add ne fonctionne.
    Je ne pense pas que les méthodes explicitées ne le permettent.
    ??

    Merci pour le coup de pouce

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    class Cellule {
      public int valeur;
      public Cellule suivant;
      
      Cellule(int _valeur)
      {
        valeur = _valeur;
        suivant = null;
      }
    }
    class ListeChainee
    {
      public Cellule tete;
      ListeChainee()
      {
        tete = null;
    
      }
      public boolean Empty ()
      {
        if (tete == null)
        return true;
        else
        return false;
      }
      public int Head ()
      {
        if (Empty ())
        return -1;
        else
        return tete.valeur;
      }
      public Cellule Tail () {
        if (Empty ())
        return null;
        else
        return tete.suivant;
      }
      public boolean Cons (int e)
      {
      if(e>=0)
      {
        Cellule tmp = new Cellule (e);
        tmp.suivant = tete;
        tete=tmp;
        return true;
      }
      else{
        return false;
      }
      }
    	public int longueur() {
                    Cellule current = tete;
                    int longueur = 0;
                    while (tete!=null){
    			tete = tete.suivant;
                            longueur ++;
    		}
    		return longueur;
    	}
      	void afficher() {
     		Cellule cellule = tete;
    		while (cellule != null ) {
    			System.out.println(", " +cellule);
    			cellule = cellule.suivant;
    		}
        }
    }
    class Main {
    public static void Main (String[] args) 
    { 
      ListeChainee L1 = new ListeChainee();
      ListeChainee L2 = new ListeChainee();
    
      L1.add(3);
      
      System.out.println("L1" +" " + L1);
       }
    }

###raw>template_hook.ano_emploi###