Usually a singly linked list is used because the amount of space to allocate for each node is at a premium. Even if you are able to solve the initial value problem, each node in a linked list may not have a field to use for this purpose.
Since changing the nodes is not needed to get the answer, this solution is not recommended. For example, node with value 5 in the above diagram. In that case there is is a good chance that no node will have your inital value, but a small chance that one would and your algorithm would fail.
Something that may not be possible in all cases. Detect Only Full Loops When asked to come up with a solution, a common pitfall is not detecting all loops, but just a loop where the last node links to the first.
Algorithms for these operations generally require a well formed linked list. We can also use Floyd Cycle Detection algorithm to detect and remove the loop. More than what we used earlier.
When resetting it, double the amount of time before resetting it again. Move both the pointers at equal speed. In such a case the implementation will run close to the running time of the length of the list.