【发布时间】:2021-12-09 20:09:48
【问题描述】:
我有以下练习我非常接近解决它但还没有 有人可以提供一些提示吗?
这里是:
假设链表节点是使用具有以下结构的类实现的:
from __future__ import annotations
class Node:
data : int
next : Node #or None
然后给出一个例子
class Node:
def __init__(self, Data, Next):
(self.data, self.next) = (Data, Next)
node2 = Node(1, None)
node1 = Node(0, node2)
node0 = Node(0, node1)
Node1 = Node(1, None)
Node0 = Node(0, Node1)
assert is_equal(node0, Node0) == False
assert is_equal(node1, Node0) == True
练习也有这段代码你已经完成
from __future__ import annotations
class Node:
data : int
next : Node #or None
def is_equal(head1: Node, head2: Node)-> bool:
这是我的解决方案,但是当我运行自动更正时,它给了我以下错误
self.assertFalse(is_equal(node0, Node0))
我为此获得了通行证
断言 is_equal(node1, Node0) == True
while head1.data == head2.data:
head1=head1.next
head2=head2.next
return True
else:
return False
【问题讨论】:
-
你只检查第一个元素。
-
好的,但它说 head1 和 head2,我错过了什么?你能详细说明一下吗?
-
你提前
head1,但不是head2。您没有比较相应的节点,只有第一个列表中的每个节点与第二个列表的第一个节点。 (至少,如果您没有在执行head1 = head1.next之前立即返回,那么您会这样做。 -
你需要比较两个节点,然后要么立即返回
False或者推进both指针。 -
我已经更新了代码,并阅读了您的说明,但我仍然收到同样的错误...
标签: python linked-list