如何在链表中找到最大的元素?
how to find largest element in a linked list?
我有下面的程序来定义链表:
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.
但这个逻辑似乎并不奏效。请提出建议。
这将 return 列表中最大的数字。
def highEle(self):
sofar = 0
a = self.start
while a:
if a.data > sofar:
sofar = a.data
a = a.next
return sofar
我有下面的程序来定义链表:
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.
但这个逻辑似乎并不奏效。请提出建议。
这将 return 列表中最大的数字。
def highEle(self):
sofar = 0
a = self.start
while a:
if a.data > sofar:
sofar = a.data
a = a.next
return sofar