声明:题目来源:力扣(LeetCode)
输入两个链表,找出它们的第一个公共结点。
题目链接:相交链表
编写一个程序,找到两个单链表相交的起始节点。
示例1:
在节点 c1 开始相交。
示例2:
两链表不相交,返回NULL。
解题思路:
- 首先需要判断两个链表长度是否相等,使用两个指针分别以相等的速度遍历两个链表,判断哪个链表长,并计算出差值 d。
- 再使用两个指针同时从表头出发,指向长链表的指针先走 d 个节点,两者再同时走。
- 判断两指针值是否相等,若相等则返回该节点的地址。
- 遍历完依然不相等,返回NULL。
以下代码可供参考:
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {