代码之家  ›  专栏  ›  技术社区  ›  user3521180

如何在链表中找到最大的元素?

  •  0
  • user3521180  · 技术社区  · 3 年前

    我有以下程序来定义链表:

    class Node:
        def __init__(self, data):
            self.data  = data
            self.nxt = None
    class lnklst:
        def __init__(self):
            self.start = None
    
        def addNode(self,value):
            nuNde = Node(value)
            if self.start is None:
               self.start = nuNde
            else:
                p = self.start
                while p.nxt != None:
                    p = p.nxt
                p.nxt = nuNde
    
        def viewNde(self):
            tp = self.start
            while tp is not None:
                print(tp.data, end=' <--> ')
                tp = tp.nxt
    
    def highEle(self):
        a = self.start
        b = a.nxt
        while a:
            if a.data > b.data:
                a.data = b.data
            tmp = a.data
            a.data = self.start
            self.start = tmp
    

    我能够创建链表,并查看元素。但是,要找到逻辑中最大的元素( def highEle )未从工作列表中链接。

    查找最大元素的逻辑如下所示:

    - Take 2 pointers 'a' and 'b'.
    - a = b
    - Since, a = b, then b holds a.next
    - Run a while loop until a is not None.
    - Inside while loop, define a 'if' statement to check if `a.data > b.data`, then swap.
    

    1 回复  |  直到 3 年前
        1
  •  1
  •   Tim Roberts    3 年前

    这将返回列表中最大的数字。

        def highEle(self):
            sofar = 0
            a = self.start
            while a:
                if a.data > sofar:
                    sofar = a.data
                a = a.next
            return sofar