p1 = p2 = head1;
do {
p1 = p1-> next;
p2 = p2-> next -> next;
} while (p1 != p2);
p2 = p3 = head2;
do {
p2 = p2 -> next;
p3 = p3 -> next -> next;
} while (p2 != p3);
p2 = p1;
do {
if (p2 == p3)
return true;
p2 = p2 -> next;
} while (p2 != p3);
return false;