考察2

とりあえず仕事と並行処理で考えたのは↑まで、単純に再帰しただけでは明らかにマズイので、具体的にどのように検査を実施するかを考えなければならない。
循環参照が存在する場合、循環の輪に巻き込まれたノードからリンクを m : m <= n 回辿ることで、そのノード自身に到達するはずなので、リンクリストを辿れる範囲に対して m 回先に自身が存在しないことを確認していくことで循環を検出できるのではないかと思われる。さらに循環している確認には、先頭から i 番目の要素が m 個目で終端であれば、n = i + m のはずで、i+1 番目の要素は n - (i + 1) == m - 1 個目で終端を迎えるはずであることが多少利用できそうだ。

つづく
ここで書いたコードの目コンパイルが通らないうちにデュナミスの時間です。