两个链表的公共节点(让链表等长,遍历两个表头)

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

http://www.nowcoder.com/questionTerminal/6ab1d9a29e88450685099d45c9e31e46

/*
你要做的事情是 写代码
增加链表长度使A,B两个链表长度相同。
A+B = B+A 。
多遍历一次链表。从A链表开始遍历完后遍历B链表
同理B链表 遍历完后遍历A链表。
直到找到同一个指针。
*/
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
       ListNode *p1 = pHead1, *p2 = pHead2;
       while(p1 != p2){
           if(!p1) p1 = pHead2;
           else  p1 = p1->next;
           p2 = p2?p2->next:pHead1; // 当指针为空时,该从另一个链表表头遍历。
       }
        return p1;
    }
};
全部评论

相关推荐

11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务