Python链表最小值
Python Linked list minimum value
我试图在列表中找到最小值,而不必使用 min 函数,而只是通过比较列表中的第一个和下一个元素。
这是我的尝试:
def min(self):
node = self.head #1st element
Min = 0 #node.next_node is the next element
while node:
if node.value > node.next_node.value:
Min = node.next_node.value
else:
Min = node.value
我只是比较第一个和第二个元素。我如何遍历整个列表
如果不了解您的节点实现的具体细节,将很难具体回答这个问题,因为这几乎肯定是一个家庭作业问题,无论如何都不会运动。
您要做的是遍历列表中的每个元素,并将其与您拥有的 Min 进行比较。如果更高,则转到下一个元素。如果较低,则将 Min 设置为该值,然后转到下一个元素。无需直接比较两个元素:只需将所有元素与 Min 进行比较即可。这种遍历列表并使用单个值变量做某事的方式非常有用:您还可以将其用于移动平均线等事情。
最简单的,如果不是非常优雅的话,首先将 Min 设置为第一个元素的值;这样你就有东西可以比较了。如果您将它设置为其他值,例如 0,那么如果您的所有值都高于 0,您将永远不会设置 Min。另一种方法是将 Min 设置为足够大的值,但这不如将其设置为第一个元素的值安全。
如何循环遍历列表取决于此列表的设计方式。如果节点始终为真,并且列表末尾的 node.next_node
为 None
,则 while node
和 node = node.next_node
之类的东西可以工作,因为这将在结尾。如果您在最后提出错误,则必须执行其他操作。
要迭代列表,您需要在每次迭代时用下一个节点更新 node
变量:
def rearrange(self):
node = self.head
if not node:
return None # an empty list
Min = node.value
while node:
if node.value < Min:
Min = node.value
node = node.next_node # move onto the next node
return Min
请注意,此函数的命名似乎很糟糕 - 重新排列了什么?
我试图在列表中找到最小值,而不必使用 min 函数,而只是通过比较列表中的第一个和下一个元素。 这是我的尝试:
def min(self):
node = self.head #1st element
Min = 0 #node.next_node is the next element
while node:
if node.value > node.next_node.value:
Min = node.next_node.value
else:
Min = node.value
我只是比较第一个和第二个元素。我如何遍历整个列表
如果不了解您的节点实现的具体细节,将很难具体回答这个问题,因为这几乎肯定是一个家庭作业问题,无论如何都不会运动。
您要做的是遍历列表中的每个元素,并将其与您拥有的 Min 进行比较。如果更高,则转到下一个元素。如果较低,则将 Min 设置为该值,然后转到下一个元素。无需直接比较两个元素:只需将所有元素与 Min 进行比较即可。这种遍历列表并使用单个值变量做某事的方式非常有用:您还可以将其用于移动平均线等事情。
最简单的,如果不是非常优雅的话,首先将 Min 设置为第一个元素的值;这样你就有东西可以比较了。如果您将它设置为其他值,例如 0,那么如果您的所有值都高于 0,您将永远不会设置 Min。另一种方法是将 Min 设置为足够大的值,但这不如将其设置为第一个元素的值安全。
如何循环遍历列表取决于此列表的设计方式。如果节点始终为真,并且列表末尾的 node.next_node
为 None
,则 while node
和 node = node.next_node
之类的东西可以工作,因为这将在结尾。如果您在最后提出错误,则必须执行其他操作。
要迭代列表,您需要在每次迭代时用下一个节点更新 node
变量:
def rearrange(self):
node = self.head
if not node:
return None # an empty list
Min = node.value
while node:
if node.value < Min:
Min = node.value
node = node.next_node # move onto the next node
return Min
请注意,此函数的命名似乎很糟糕 - 重新排列了什么?