 Belirli bir baş, bağlantılı bir listenin başı, bağlantılı listenin içinde bir döngü olup olmadığını belirleyin. Listede bir sonraki işaretçiyi sürekli takip ederek tekrar ulaşılabilen bir düğüm varsa, bağlantılı bir listede bir döngü vardır. Dahili olarak pos, kuyruğun bir sonraki işaretçisinin bağlı olduğu düğümün indeksini belirtmek için kullanılır. pos'un bir parametre olarak iletilmediğine dikkat edin. Bağlantılı listede bir döngü varsa true döndürür. Aksi takdirde, false döndürün.
Bağlantılı bir listedeki döngüyü tespit etmeye yönelik bir yaklaşım, Floyd'un tavşan ve kaplumbağa algoritması olarak da bilinen döngü bulma algoritmasıdır. Bu yaklaşımda, iki işaretçi, bir yavaş işaretçi ve bir hızlı işaretçi, bağlantılı listede gezinir. Bağlantılı liste bir döngü içeriyorsa, sonunda hızlı işaretçi yavaş işaretçiyi yakalayacaktır. İşte Floyd'un algoritmasını uygulamak için kullanılan kod: ``` bool hasCycle(ListNode *head) { if (head == nullptr || head->next == nullptr) { return false; } ListNode* yavaş = kafa; ListNode* hızlı = baş->sonraki; while (yavaş != hızlı) { if (hızlı == nullptr || hızlı->sonraki == nullptr) { false döndürür; } yavaş = yavaş->sonraki; hızlı = hızlı->sonraki->sonraki; } true döndür; } `` Bu algoritmanın zaman karmaşıklığı O(n)'dir ve uzay karmaşıklığı O(1)'dir; burada n, bağlantılı listedeki düğümlerin sayısıdır.