プログラムを作成し、チェーンテーブルにループがあるかどうかを判断します.

403 ワード

2つのポインタを使用して一方向チェーンテーブルを巡回し、最初のポインタP 1は、一歩ずつ歩きます.2番目のポインタP 2は、2ステップずつ歩く.P 2ポインタがP 1に追いつくとチェーンテーブルにループがあることを示します.
int testLinkRing(Link *head)
{
    Link *t1=head;
    Link *t2=head;
    while(t1->next&&t2->next)
    {
        t1=t1->next;
        if(t2->next->next==NULL)
            return 0;//  
        if(t1==t2)
            return 1;//  
    }
}