在Python中查找单链表的中间节点的程序
假设我们有一个单链列表节点,我们必须找到中间节点的值。当有两个中间节点时,我们将返回第二个。我们必须尝试一次解决这个问题。
因此,如果输入类似于[5,9,6,4,8,2,1,4,5,2],则输出将为2。
为了解决这个问题,我们将按照以下步骤操作:
p:=节点
d:= 0,l:= 0
当节点不为空时,执行
节点:=节点的下一个
l:= l + 1,d:= d + 1
如果d与2不同,则
除此以外,
p:= p的下一个,d:= 0
当l为奇数时返回p的val,否则返回p的下一个值
让我们看一下下面的实现以获得更好的理解
示例
class ListNode:def __init__(self, data, next = None):
self.val = data
self.next = next
def make_list(elements):
head = ListNode(elements[0])
for element in elements[1:]:
ptr = head
while ptr.next:
ptr = ptr.next
ptr.next = ListNode(element)
return head
class Solution:
def solve(self, node):
p=node
d=0
l=0
while node:
if d!=2:
node=node.next
l+=1
d+=1
else:
p=p.next
d=0
return p.val if l & 1 else p.next.val
ob = Solution()head = make_list([5,9,6,4,8,2,1,4,5,2])
print(ob.solve(head))
输入值
Input:[5,9,6,4,8,2,1,4,5,2]
输出结果
2
以上是 在Python中查找单链表的中间节点的程序 的全部内容, 来源链接: utcz.com/z/348776.html