鏈表是常見的數據結構之一,Python也提供了相應的實現方法。當我們需要判斷兩個鏈表是否相等時,我們需要考慮鏈表中每個節點的值、節點的位置等多個因素。
class Node: def __init__(self, val=None, next=None): self.val = val self.next = next class LinkedList: def __init__(self): self.head = None #在鏈表結尾添加節點 def add_node(self, val): node = Node(val) if not self.head: self.head = node else: current = self.head while current.next: current = current.next current.next = node #判斷兩個鏈表是否相等 def __eq__(self, other): if not isinstance(other, LinkedList): return False current1 = self.head current2 = other.head while current1 and current2: if current1.val != current2.val: return False current1 = current1.next current2 = current2.next return current1 is None and current2 is None a = LinkedList() a.add_node(1) a.add_node(2) b = LinkedList() b.add_node(1) b.add_node(2) c = LinkedList() c.add_node(1) c.add_node(3) print(a == b) #True print(a == c) #False
上述代碼定義了一個Node類和一個LinkedList類,其中LinkedList類包含了判斷兩個鏈表是否相等的方法。在main函數中,我們分別創建了鏈表a、b、c,其中a和b兩個鏈表相等,而a和c兩個鏈表不相等。可以看到,我們使用了雙指針的方法對兩個鏈表進行遍歷,同時比較兩個鏈表中節點的值是否相等,最后返回判斷結果。