链表: 两个链表的第一个公共结点

61 阅读1分钟

image.png

方法

  1. 使用两个指针p1,p2,p1从链表1开始遍历,p2从链表2开始遍历。
  2. p1走完链表1时,从链表2继续遍历,p2先走完链表2,则从链表1继续遍历,也就是说,p1和p2都会把两个链表都遍历完,遍历中,如果节点相等时,就是公共节点了。
function FindFirstCommonNode(pHead1, pHead2)
{
    if(!pHead1 || !pHead2) return null;
    let p1 = pHead1;
    let p2 = pHead2;
     
    while(p1 != p2) {
        p1= (p1===null ? pHead2 :p1.next);
        p2= (p2===null ? pHead1 :p2.next);
    }
    return p1;
}