Bonsoir tout le monde, voila j'ai un soucis à propos des liste chainées.
Je travaille sur des listes triées, l'ajout d'un élément se fait toujours au bon endroit.
Et j'ai un soucis à propos de la méthode d'ajout, j'ai du mal à l'implémenter (du point vu algorithmique je l'ai) donc si vous pouvez me donner quelques pistes (je remet aussi peut-être en cause la manière dont je vois les listes chainées en java, j'ai l'impression d'être en C par moment ou leurs implémentations est vachement plus simple!).
Voici ma classe Liste (classe abstraite car je code plusieurs types listes : les listes triées, liste chainée acceptant les doublons et liste chainée qui n'accepte pas les doublons). Dans cette classe se trouve une classe static Node (qui represente un noeud de ma chaine):
et voici ma classe Liste_simple qui n'accepte pas les doublons( pour l'instant on s'en fiche,moi je veux juste insérer dans l'ordre) :
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 /** * Classe abstraite pour representant les listes chainées/ * */ public abstract class Liste { /** * Classe interne pour representer un Noeud (un entier, un pointeur sur l'element suivant) * */ public static class Node { private int val; private Node next; public Node(int x) { this.val = x; this.next = null; } public Node(int x, Node l) { this.val = x; this.next = l; } public int getVal() { return val; } public void setVal(int val) { this.val = val; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } } // Fin de la classe Interne protected Node deb; public Liste() { deb = null; } public Liste(Node l) { this.deb = l; } public boolean estVide() { /* retourne si la liste est vide */ return deb == null; } }
Est-ce que vous pensez que j'ai besoin de plus d'information pour faire une telle méthode d'ajout (je parle par exemple d'ajouter des attributs)?
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 public class List_S extends Liste implements Operations { public List_S() { super(); } public List_S(Node l) { super(l); } public Liste ajouteElement(int x) { return null; } public String toString() { if(this.estVide()) return "Liste vide"; String res = ""; Node l = deb; while(l != null) { res += l.getVal() + " --> "; l = l.getNext(); } return res += "NULL"; } @Override public Liste supprimerElement(int x) { // TODO Auto-generated method stub return null; } @Override public Liste union(Liste l1, Liste l2) { // TODO Auto-generated method stub return null; } @Override public void union(Liste l) { // TODO Auto-generated method stub } @Override public Liste intersection(Liste l1, Liste l2) { // TODO Auto-generated method stub return null; } @Override public void intersection(Liste l) { // TODO Auto-generated method stub } }
Merci bcp de votre aide
Partager