/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
		//创建两个节点->两个链表
		ListNode* l1 = pHead1;
		ListNode* l2 = pHead2;
		while(l1 != l2)
		{
			//到链表结尾时遍历另一个链表,直到每个链表都被遍历两遍
			l1 = (l1 == NULL)?pHead2:l1->next;
			l2 = (l2 == NULL)?pHead1:l2->next;
		}
		//当有公共节点时,直接返回从公共节点到链表结尾的公共链表
		//无公共节点时因为遍历到链表结尾结果为NULL,也可返回l1
		return l1;
        }
};