이 코드는 C++에서 목록의 중간 노드를 인쇄하는 것으로 밝혀졌지만 코드를 이해하지 못했습니다 ... 누군가이 설명을 할 수 있습니까?단일 링크 목록의 중간 노드
Type& findMiddleNode()
{
int check = 0;
nodeType *current;
nodeType *mid;
current = first;
mid = first;
while (current != NULL)
{
current = current->link;
check = (check + 1) % 2;
if (check == 0)
mid = mid->link;
}
return mid->info;
}
PD :이 코드는 완벽하게 작동하지만 이해가 안됩니다! 누군가 내가 이것을 이해하도록 도와줍니다. 감사!
정확히 이해하지 못하겠습니까? 우리는 당신이 그렇게 말할 때 더 나은 도움을 줄 수 있습니다 :) – Rakete1111
아이디어는 다른 속도의 두 배 빠른 속도로 목록을 가로 지르는 두 개의 포인터를 갖는 것입니다. 빠른 포인터는 모든 반복에서, 느린 포인터는 모든 다른 반복에서만 진행됩니다. 빠른 포인터가 목록의 끝에 도달하면 느린 포인터가 정확히 중간에 위치합니다. –
포인터의 현재 및 중간 기능과 var 전류를 이해하지 못합니다. 나는 while 루프에서 프로세스를 이해하지 못한다. –