Cela semble renvoyer la bonne réponse, mais je ne suis pas sûr que ce soit vraiment la meilleure façon de procéder. Il semble que je visite les n premiers noeuds trop souvent. Aucune suggestion? Notez que je dois le faire avec une liste unique.Trouver le «Nième nœud à partir de la fin» d'une liste chaînée
Node *findNodeFromLast(Node *head, int n)
{
Node *currentNode;
Node *behindCurrent;
currentNode = head;
for(int i = 0; i < n; i++) {
if(currentNode->next) {
currentNode = currentNode->next;
} else {
return NULL;
}
}
behindCurrent = head;
while(currentNode->next) {
currentNode = currentNode->next;
behindCurrent = behindCurrent->next;
}
return behindCurrent;
}
Est-ce une liste chaînée avec aucune information sur le nombre d'éléments présents dans la liste? – dirkgently
Correct. Liste individuellement liée. – Stephano
Juste pour être difficile, je nommerais 'behindCurrent' comme' currentNode' et 'currentNode' comme quelque chose d'autre. – fastcodejava