Кажется, это вернет правильный ответ, но я не уверен, действительно ли это лучший способ заниматься вещами. Похоже, что я посещаю первые n узлов слишком много раз. Какие-либо предложения? Обратите внимание, что я должен сделать это с помощью отдельного списка.
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;
}