问题
I have a question:
Find the middle element from a single linked list.
I need to know the way/method of this problem.
回答1:
You can use two pointers to iterate through the list - one which iterates twice as fast as the other. When the fast pointer reaches the end of the list then the slow pointer will be pointing at the mid-point.
Algorithm:
init slow_pointer = head
init fast_pointer = head
repeat
fast_pointer = fast_pointer->next;
if fast_pointer == NULL
break;
fast_pointer = fast_pointer->next;
if fast_pointer == NULL
break;
slow_pointer = slow_pointer->next;
until false
// slow_pointer now points at the middle node
来源:https://stackoverflow.com/questions/35653250/extract-middle-element-from-a-single-linked-list