Python;链表和遍历!

标签 python linked-list traversal

现在在学校开始用 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/

相关文章:

c - 如何比较C中链表中的每个项目?

java - Neo4j 3.1遍历API,如何找到两个节点之间的最短路径?

neo4j - 在 Neo4j Cypher 查询中仅返回简单路径

python - 在 docker-py 中发布到随机端口并返回端口

python - 为什么由不同初始化的集合构成的元组是相等的?

python - 将字符串拆分为字符和数字并存储在 map Python 中

python - django-tables2 link列访问器

linked-list - 是否可以从标准库的 LinkedList 中弹出某个元素?

c++ - 链接列表的访问冲突异常

haskell - 编写更复杂的遍历(镜头)