问题:链表的公共节点
输入两个链表,找出他们的第一个公共节点。
ilistnode* findcommon(ilistnode* list1, ilistnode* list2)
{
ilistnode* templist1 = list1;
ilistnode* templist2 = list2;
if (list1 == NULL || list2 == NULL)
return NULL;
int length1 = 0;
for (; list1 != NULL; list1 = list1->getnext())
{
length1++;
}
int length2 = 0;
for (; list2 != NULL; list2 = list2->getnext())
{
length2++;
}
if (length1 > length2)
{
int oset = length1 - length2;
for (; oset != 0; oset--)
{
templist1 = templist1->getnext();
}
}
else
{
int oset = length2 - length1;
for (; oset != 0; oset--)
{
templist2 = templist2->getnext();
}
}
while (templist1 != NULL&&templist2 != NULL)
{
if (templist1 != templist2)
{
templist1 = templist1->getnext();
templist2 = templist2->getnext();
}
else
break;
}
return templist1;
}