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

โปรแกรมเพื่อแทรกองค์ประกอบรายการจากรายการที่เชื่อมโยงสองรายการใน Python


สมมติว่าเรามีรายการที่เชื่อมโยงสองรายการ l1 และ l2 เราต้องส่งคืนรายการที่เชื่อมโยงหนึ่งรายการโดยแทรกองค์ประกอบระหว่างสองรายการนี้โดยขึ้นต้นด้วย l1 หากมีโหนดที่เหลือในรายการที่เชื่อมโยง โหนดเหล่านั้นควรถูกผนวกเข้ากับรายการ

ดังนั้น หากอินพุตเป็น l1 =[5,4,6,3,4,7] l2 =[8,6,9] ผลลัพธ์จะเป็น [5,8,4,6,6,9, 3,4,7]

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

  • ตอบ :=l1

  • ในขณะที่ l2 ไม่เป็นโมฆะให้ทำ

    • ถ้า ans ไม่เป็นโมฆะ

      • ถ้า next of ans ไม่เป็นโมฆะ

        • newnode :=รายการโหนดใหม่ที่มีค่า l2 เท่ากัน

        • ถัดไปของ newnode :=ถัดไปของ ans

        • ถัดไป :=newnode

        • ans :=ถัดไปของโหนดใหม่

        • l2 :=ถัดไปของ l2

      • มิฉะนั้น

      • ถัดไป :=l2

      • ออกจากวง

    • มิฉะนั้น


      • กลับ l2


  • กลับ l1

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

Source Code (Python):class ListNode:def __init__(self, data, next =None):self.val =data self.next =nextdef make_list(elements):head =ListNode(elements[0]) สำหรับองค์ประกอบ ในองค์ประกอบ[1:]:ptr =head while ptr.next:ptr =ptr.next ptr.next =ListNode(element) return headdef print_list(head):ptr =head print('[', end ="") while ptr:print(ptr.val, end =", ") ptr =ptr.nextprint(']')class Solution:def dissolve(self, l1, l2):ans =l1 while l2:if ans:if ans.next !=ไม่มี:newnode =ListNode (l2.val, None) newnode.next =ans.next ans.next =newnode ans =newnode.next l2 =l2.next อื่น:ans.next =l2 break อื่น:return l2 return l1ob =Solution()l1 =make_list([5,4,6,3,4,7])l2 =make_list([8,6,9])res =ob.solve(l1,l2)print_list(res) 

อินพุต

[5,4,6,3,4,7],[8,6,9]

ผลลัพธ์

[5, 8, 4, 6, 6, 9, 3, 4, 7, ]