我试图找到列表中的最小值,而不必使用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
我只是在比较第一个和第二个元素。我如何遍历整个列表
答案 0 :(得分:3)
如果不知道节点实现的具体细节,那么具体回答这个问题很困难,因为这几乎肯定是一个功课问题,无论如何都不会运动。
您要做的是浏览列表中的每个元素,并将其与您拥有的Min进行比较。如果它更高,那么只需转到下一个元素。如果它更低,则将Min设置为该值,然后转到下一个元素。没有必要直接比较两个元素:只需将所有内容与Min进行比较。这种通过列表并使用单个值变量执行某些操作的方式非常有用:您还可以将其用于移动平均值等事项。
最简单的,如果不是非常优雅,首先将Min设置为第一个元素的值;那样你就可以比较一些东西了。如果你把它设置为其他东西,比如0,那么如果你的所有值都高于0,你就不会设置Min。另一种方法是将Min设置为足够大的值,但这并不像将其设置为第一个元素的值那样安全。
如何遍历列表取决于此列表的设计方式。如果某个节点始终为true,并且列表末尾的while node
为node = node.next_node
,则node.next_node
与None
之类的内容可以正常工作,因为这会停止结束。如果您最后提出错误,那么您将不得不做其他事情。
答案 1 :(得分:2)
要迭代列表,您需要在每次迭代时使用下一个节点更新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
请注意,此功能似乎命名不佳 - 重新排列了什么?