タイトル:彼らの最初の共通のノードを見つけるために、二つのリストを入力します。
デフ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つのリストの共通ノードです。