前提・実現したいこと
初投稿です。
Pythonで、2つの同一な線形リストを作り、それが同一であるか調べる関数is_sameをつくりました。
returnで再帰を行っているのですが、
if x.val == y.val: return is_same(x.next, y.next)
だとTrueになるのですが、
if x == y: return is_same(x.next, y.next)
だとFalseになります。
xもyも同じ値が入っていて、ポインターも同じ値を指しているから同一であるはずなのに、なぜ上のコードと下のコートで実行結果が異なるのでしょうか。
(想定していた出力は上のほうです)
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
Python
1class ListNode: 2 def __init__(self, x): 3 self.val = x 4 self.next = None 5 6def is_same(x,y) -> bool: 7 if x is None and y is None: 8 return True 9 if x is None and y is not None or x is not None and y is None: 10 return False 11 if x.val != y.val: 12 return False 13 if x.val == y.val: 14 return is_same(x.next, y.next) 15 16if __name__ =='__main__': 17 head = ListNode(0) 18 node = head 19 20 for n in range(1, 100): 21 node.next = ListNode(n) 22 node = node.next 23 24 head2 = ListNode(0) 25 node2 = head2 26 27 for n in range(1, 100): 28 node2.next = ListNode(n) 29 node2 = node2.next 30 31 print(is_same(head, head2)) 32 33
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。