共通ノードの最初の二つのリスト52-

タイトル:彼らの最初の共通のノードを見つけるために、二つのリストを入力します。

デフfirst_common_node(HEAD1、HEAD2):
    P1、P2 = HEAD1、HEAD2 
    CNT1、CNT2 = 0,0 
    、一方P1:
        CNT1 + = 1 
        、P1 = p1.next 
    ながらP2:
        CNT2 + = 1 
        、P2 = p2.next 

    P1、P2 = HEAD1、HEAD2 
    CNT1> CNT2の場合:
        私のための範囲内(CNT1-CNT2):
            P1 = p1.next 
    CNT2> CNT1の場合:
        I範囲内(CNT2-CNT1)について:
            P2 = p2.next 

    !p1.data = P2中.DATA:
        P1 = p1.next 
        P2 = p2.next 

    戻りP1

  注:直面した場合に限り、2つのそれぞれのノードの後に​​同じ長さのリストとが一緒に戻って横切るように、最初の二つのリストの共通ノードを見つけるために2つのノード、すなわち第1の共通ノード、同じであると。まず、2つのリストの長さを計算し、リストの残りの長さが互いに等しくなり、一緒に横断できるように、長いリストを手放します。

第二の方法は、2つのスタック記憶二つのリストであり、そして2つのスタックポップ操作を行い、それが2つのノード同じスタックポップかどうかが決定される、最後のものと同じノードは、最初の2つのリストの共通ノードです。

おすすめ

転載: www.cnblogs.com/kingshine007/p/11502680.html