struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) { struct ListNode *cur1 = headA, *cur2 = headB; if(cur1 == NULL || cur2 == NULL) return NULL; while (cur1 && cur2 && cur1 != cur2) { cur1 = cur1 -> next; cur2 = cur2 -> next; if (cur1 == cur2) return cur1; if(!cur1) cur1 = headB; if(!cur2) cur2 = headA; } return cur1; }