蟒蛇; 链接列表和遍历!

lid*_*alv 2 python traversal linked-list

现在在学校用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)
Run Code Online (Sandbox Code Playgroud)

输入:例子

54
37
100
123
1
54
Run Code Online (Sandbox Code Playgroud)

要求的输出

123
Run Code Online (Sandbox Code Playgroud)

Ale*_*lli 5

Python中很少使用"链接列表" - 通常,只使用listPython内置列表,这实际上更像是一个"动态向量".因此,将链接列表指定为练习约束的一部分是很奇怪的.

但重点是,您显示的代码已经创建了一个链表 - 头部位于forste,并且,对于每个节点,下一个节点指针位于.neste,有效负载位于.vekt.所以,大概,不管你的问题是什么,这都不是你所要求的.

完全构建链接列表后,循环遍历链表的简单方法(即,在当前代码的末尾spor)

current = forste
while current is not None:
   ...process current.vekt...
   current = current.neste
Run Code Online (Sandbox Code Playgroud)

在您的情况下,"过程"部分的逻辑当然是,因为您的Q的文本已经说明:

   if current.vekt > themax:
       themax = current.vekt
Run Code Online (Sandbox Code Playgroud)

唯一的微妙之处在于,您需要themax在此while循环之前初始设置为"尽可能低的数字"; 在Python的最新版本中,"负无穷大"被可靠地记录和比较(尽管只是作为一个浮点数,它仍然可以正确地与整数进行比较),所以

themax = float('-inf')
Run Code Online (Sandbox Code Playgroud)

会工作.更优雅的可能是最初将最大值设置为第一个有效负载,避免弄乱无穷大.