输入两个链表,找出他们的第一个公共节点。
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; }