Java Comment trouver une valeur dans une liste liée de manière itérative et récursive
J'ai une méthode qui a une référence à une liste, et une valeur int. Ainsi, cette méthode permettrait de comptabiliser et de les retourner à quelle fréquence la valeur qui se passe dans la liste chaînée. Donc, j'ai décidé de faire une classe,
public class ListNode{
public ListNode (int v, ListNode n) {value = v; next = n;)
public int value;
public ListNode next;
}
Ensuite, la méthode serait de commencer avec un
public static int findValue(ListNode x, int valueToCount){
//so would I do it like this?? I don't know how to find the value,
//like do I check it?
for (int i =0; i< x.length ;i++){
valueToCount += valueToCount;
}
Donc, j'ai CHANGÉ cette partie, Si je l'ai fait de manière récursive, alors je l'ai
public static int findValue(ListNode x, int valueToCount) {
if (x.next != null && x.value == valueToCount {
return 1 + findValue(x, valueToCount);}
else
return new findvalue(x, valueToCount);
DONC, est la partie récursive bon maintenant?
- ... et votre question est " serait-ce de travailler?'?
- oui, je me demandais si cela peut fonctionner
Vous devez vous connecter pour publier un commentaire.
Vous devez en quelque sorte de savoir où votre fin de la liste. Supposons (comme c'est l'approche la plus facile) que le dernier nœud a
next
la valeur null. Vous pouvez alors utiliser cette check quand arrêter l'itération:La même approche peut être utilisée pour la solution récursive, sauf que c'est un peu messier, car vous aurez besoin de passer votre
count
comme paramètre à la fonction récursive appel.int
à votre signature, faites votrewhile
unif
et modifier lecurrentNode=currentNode.next;
àreturn findValue(x,valueToCount,count);
if
/else
déclaration, le commentaire ci-dessus vous donne des indices pour adopter une méthode récursive.Cela ressemble à un bug dans votre code exemple:
Vous devriez être en incrémentant le comte, non pas la valeur recherchée. Aussi n'oubliez pas de passer à la prochaine noeud! Donc, cela devrait être:
Peu Lisper chemin:
Quel est le résultat de null -- null
Ce qui est de trouver la suite d'un noeud normal --
si trouvé
sinon essayer nœud suivant récursivement
Pour obtenir vous avez commencé, vous trouverez que si vous exécutez votre
findValue
méthode avec une valeur non nulleListNode
vous permettra de déclencher une boucle infinie. Vous aurez besoin de déplacer votre nœud denext
sur chaque récursion.