Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

A linked list contains a cycle if, starting from some node p, following a suffic

ID: 3923451 • Letter: A

Question

A linked list contains a cycle if, starting from some node p, following a sufficient number of next links brings us back to node p. p does not have to be the first node in the list. Assume that you are given a linked list that contains N nodes. However, the value of N is unknown.

A. Design an O(N) algorithm to determine if the list contains a cycle. You may use O(N) extra space.

B. Repeat part (a), but use only O(1) extra space. (Hint: Use two iterators that are initially at the start of the list, but advance at different speeds.) (No program needed, pseudo code is fine).

Explanation / Answer

Algorithm:

Linked List Each node has two parts 1) data--contains the value 2) Next--pointer o the next node in the list
  

Have two pointers iterating through the list; make one iterate through at twice the speed of the other,
and compare their positions at each step.


node* slower(begin), * faster(begin); //two pointers
while(faster = faster->next)
{
    if(faster == slower) { throw exception("There's a cycle"); }
    faster = faster->next;
    if(faster == slower) { throw exception("There's a cycle"); }
    slower = slower->next;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote