int CalcLength(SNode *p){
int nLen = 0;
while (p){
p = p->pNext;
nLen++;
}
return nLen;
}
SNode *FindFirstSameNode(SNode *pA, SNode *pB){
pA = pA->pNext;
pB = pB->pNext;
int nA = CalcLength(pA);
int nB = CalcLength(pB);
if (nA > nB){
swap(pA, pB);
swap(nA, nB);
}
for (int i = 0; i < nB - nA; i++)
pB = pB->pNext;
while (pA){
if (pA == pB)
return pA;
pA = pA->pNext;
pB = pB->pNext;
}
return NULL;
}