);
SListPushBack(&a,2);
SListPushBack(&a,3);
SListPushBack(&a,4);
SListPushBack(&a,5);
tail=SListFind(a,5);//构建带环
enter=SListFind(a,3);
tail->next=enter;
cur=SListIsCycle(a);
printf("是否带环:%d\n",cur->data);
printf("环长度为:%d\n",SListCycleLen(cur));
printf("环入口点为:%d\n",SListCrossEntreNode(a,cur)->data);
}
void Test14()//14。判断两个链表是否相交,若相交,求交点。(假设链表不带环)
{
SListNode *a,*b;
SListNode *n1=BuySListNode(1);
SListNode *n2=BuySListNode(2);
SListNode *n3=BuySListNode(3);
SListNode *n4=BuySListNode(4);
a=BuySListNode(7);
b=BuySListNode(8);
n1->next=n2;
n2->next=n3;
n3->next=n4;
a->next=b;
b->next=n3;
printf("是否带环:%d \n",SListIsCycle(a,n1));
printf("环的入口点为:%d \n",SListEnterNode(a,n1)->data);
} 主函数:
int main()
{
//Test1();
//Test2();
//Test3();
//Test4();
//Test5();
//Test6();
//Test7();
//Test8();
//Test9();
//Test10();
//Test11_12_13();
Test14();
system("pause");
return 0;
}
如上就是经典面试题的解法。灵活应用,后续会继续更新。 <
|