String toString sur liste chainée
bonjour amis développeurs,
j'ai un soucis au niveau de ma méthode pour afficher une liste chainée. Déjà je suis sur une boucle infinie et je vois pas ce qui cloche.
en plus la console m'indique qu'il me faudrait un string toString que je n'arrive pas à faire:calim2:je pense que mon cerveau n'en peux plus.
Je dois rendre mon travail demain en fin de journée. Je vous met mon code et n'hésitez pas sur vos remarques.
merci d'avance
Code:
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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
public class listeChainee {
public cellule tete;
listeChainee() {
tete = null;
}
listeChainee(cellule tt) {
tete = tt;
}
public boolean empty() {//détermine si la liste est vide
if (tete == null) {
return true;
} else {
return false;
}
}
public int head() {//accède à la tête de la liste
if (empty()) {//si la liste est vide
return -1;//on retourne une valeur incohérente
} else {//sinon
return tete.valeur;//on retourne la valeur de l'élément de tête
}
}
public cellule tail() {//accède a la queue de la liste
if (empty()) {//si la liste est vide
return null;//on retourne null
} else {//sinon
return tete.suivant;//on retourne la queue de la liste
}
}
public boolean cons(int e) {//construit une nouvelle cellule avec une valeur
if (e >= 0) {//si e est bien un entier positif
cellule tampon = new cellule(e);//on créer une nouvelle cellule de valeur e
tampon.suivant = tete;//on affecte la liste courante en tant que queue
tete = tampon;//on écrase la liste courante par la nouvelle liste
return true;//on signale que l'ajout s'est bien passé
} else {//sinon
return false;//on signale que l'ajout à échouer
}
}
public static int longueur(listeChainee listeX) {//calcule la longueur de la liste
cellule celluleSuivante = listeX.tail();//on indique que la cellule suivante va à la queue
if (!listeX.empty()) {//si la liste n'est pas vide
listeChainee nextListe = new listeChainee(celluleSuivante);//on créer une nouvelle liste
return listeChainee.longueur(nextListe) + 1;//on retourne la nouvelle liste
}
return 1;
}
public boolean chercher(listeChainee listeX, int element) {//cherche si un élément appartient à la liste
boolean retour = false;
if (listeX != null) {//on teste si la liste n'est pas null
if (listeX.head() == element) {//on teste si l'élément de tête est pareil que l'élément recherché
return true;//si c'est le même on sort de la boucle
} else {//sinon
cellule nextCellule = listeX.tail();//la cellule suivante est la liste de queue
while (!retour && nextCellule != null) {//on fait tant que la condition est fausse et que la cellule suivante est différente de null
if (nextCellule.valeur == element) {//si la valeur de la cellule suivante est celle que l'on cherche
return true;//on sort de la boucle
} else {//sinon
nextCellule = nextCellule.NextCellule();//on passe à la cellule suivante
}
}
}
}
return retour;//on retourne le résultat
}
public static int nieme(listeChainee listeX, int position) {//trouve et retourne un élément a une position précise
if (position == 1) {//si la position rechercher est la 1ère
return listeX.head();//on retourne la tête de liste
} else {//sinon
return listeChainee.nieme(listeX, position - 1);//on recherche la position dans la liste de queue
}
}
public static void afficher(listeChainee listeX) {
while (!listeX.empty() ) {//tant que la liste n'est pas vide
Terminal.ecrireStringln(" " + listeX);//on écrit la liste
cellule nextCellule = listeX.tail();//la cellule suivante est la queue de la liste
}
return;
}
public static void snoc(listeChainee listeX, int cellule) {//ajoute un element passe en parametre en fin de liste
cellule nextCellule = listeX.tail();//la cellule suivante est la liste de queue
while (nextCellule != null) {//on fait tant que la cellule suivante n'est pas null
nextCellule = nextCellule.NextCellule();//on passe de cellule en cellule
}
listeChainee nouvelle = new listeChainee();//on créer une nouvelle liste
nouvelle.cons(cellule);//on ajoute une cellule à la fin de la nouvelle liste
return;//on retourne la liste
}
public boolean filtrerPair(listeChainee listeX) {//permet d'avoir que des nombres pairs
boolean vrai = false;
listeChainee lc = new listeChainee();//on crée une nouvelle liste
if (listeX.head() % 2 == 0) {//si la tête de liste est divisible par 2
listeX = lc;//on l'ajoute à la nouvelle liste
return true;
} else {//sinon
cellule nextCellule = listeX.tail();//la cellule suivante est la queue de la liste
while (!vrai && nextCellule != null) {//on fait tant que la condition est différente de vrai et que la cellule suivante est différente de null
if (nextCellule.valeur % 2 == 0) {//si la valeur contenue dans la cellule suivante est divisible par 2
listeX = lc;//on l'ajoute à la nouvelle liste
return true;
} else {//sinon
nextCellule = nextCellule.NextCellule();//on passe à la cellule suivante
}
}
}
listeChainee.afficher(lc);//on affiche la nouvelle liste
return vrai;
}
} |