现在在学校开始用 python 编程,我不知道如何处理这个问题。有什么想法吗?
输入由换行符分隔的整数组成。你的程序应该在链表中提交它们,遍历链表并打印最大的数字。
取第一个数字,然后执行“如果下一个数字更大,取那个数字,否则,保留当前数字,并在列表中向下移动并重复”的操作
然后当它到达列表的末尾时,它会打印它的值。
from sys import stdin
class Kubbe:
vekt = None
neste = None
def __init__(self, vekt):
self.vekt = vekt
self.neste = None
def spor(kubbe):
# WRITE YOUR CODE HERE
# Creates linked list
forste = None
siste = None
for linje in stdin:
forrige_siste = siste
siste = Kubbe(int(linje))
if forste == None:
forste = siste
else:
forrige_siste.neste = siste
# Calls the solution function and prints the result
print spor(forste)
输入:例子
54
37
100
123
1
54
要求的输出
123
最佳答案
“链表”在 Python 中很少使用——通常,人们只使用 list
,Python 内置列表,它实际上更像是一个“动态向量”。因此,将链表指定为练习约束的一部分是很奇怪的。
但要点是,您显示的代码已经创建了一个链表——头部位于 forste
,并且对于每个节点, .neste
中的下一个节点指针,.vekt
中的有效载荷。因此,大概这不是您要问的内容,无论您的问题是什么文本。
在完全构建链表后(即在 spor
的当前代码末尾)循环遍历链表的简单方法是
current = forste
while current is not None:
...process current.vekt...
current = current.neste
在你的情况下,“过程”部分的逻辑当然是,正如你的 Q 的文字已经说的那样:
if current.vekt > themax:
themax = current.vekt
唯一的微妙之处是,在这个while
循环之前,您需要初始设置themax
到“可能的最低数”;在最近的 Python 版本中,“负无穷大”被可靠地记录和比较(虽然只是作为一个 float ,它仍然可以正确地与整数进行比较),所以
themax = float('-inf')
会起作用。更优雅的做法可能是最初将最大值设置为第一个有效载荷,避免弄乱无穷大。
关于Python;链表和遍历!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3575781/