Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมแทรกองค์ประกอบใหม่ลงในรายการที่เชื่อมโยงก่อนตำแหน่งที่กำหนดใน Python


สมมติว่าเรามีรายการองค์ประกอบ องค์ประกอบเหล่านี้ถูกจัดเก็บไว้ในรายการที่เชื่อมโยงเพียงอย่างเดียว เรายังมีค่า pos และค่า val เราต้องใส่ val ก่อน index pos ของลิงค์ลิสต์

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[1,5,3,6,8] pos =3 val =7 ผลลัพธ์จะเป็น [1,5,3,7,6,8]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ใหม่ :=สร้างโหนดรายการที่เชื่อมโยงด้วยค่าเดียวกับ val

  • ถ้า pos เหมือนกับ 0 แล้ว

    • ถัดไปของใหม่ :=list_head

    • กลับมาใหม่

  • อุณหภูมิ :=list_head

  • ในขณะที่ temp ไม่เป็นโมฆะและ pos ไม่เหมือนกับ 1 ให้ทำ

    • temp :=ถัดไปของอุณหภูมิ

    • pos :=pos - 1

  • ถัดไปของใหม่ :=ถัดไปของชั่วคราว

  • ถัดไปของอุณหภูมิ :=ใหม่

  • กลับ 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, ]