在Python中的链表中插入新元素到指定位置之前的程序

在Python中的链表中插入新元素到指定位置之前的程序

假设我们有一个包含元素的列表;这些元素存储在一个单链表中。我们还有一个值pos和值val。我们必须在链表的索引pos之前插入val。

所以,如果输入是nums = [1,5,3,6,8],pos = 3,val = 7,那么输出将是[1, 5, 3, 7, 6, 8]

为了解决这个问题,我们将采取以下步骤 –

  • new:用与val相同的值创建一个链表节点

  • 如果pos等于0,则

    • new.next:= list_head

    • 返回新的节点

  • temp:= list_head

  • 当temp不为空且pos不等于1时执行以下操作

    • temp:= temp.next

    • pos:=pos-1

  • new.next := temp.next

  • temp.next:= new

  • 返回list_head

示例

让我们看看以下实现以获得更好的理解

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

   def print_list(head):
      ptr = head
      print('[', end = "")
      while ptr:
         print(ptr.val, end = ", ")
         ptr = ptr.next
      print(']')

   def solve(list_head, pos, val):
      new = ListNode(val)
      if pos == 0:
         new.next = list_head
         return new

      temp = list_head
      while temp and pos != 1:
         temp = temp.next
         pos -= 1
      next = temp.next
      temp.next = new

   return list_head

nums = [1,5,3,6,8]
pos = 3
val = 7

list_head = make_list(nums)
list_head = solve(list_head, pos, val)
print_list(list_head)

输入

[1,5,3,6,8], 3, 7

输出

[1, 5, 3, 7, 6, 8, ]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程