在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

    回到顶部