Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình xen kẽ các phần tử danh sách từ hai danh sách được liên kết bằng Python

Giả sử chúng ta có hai danh sách liên kết l1 và l2, chúng ta phải trả về một danh sách liên kết bằng cách xen kẽ các phần tử của hai danh sách này bắt đầu bằng l1. Nếu có bất kỳ nút nào còn sót lại trong danh sách được liên kết, chúng phải được thêm vào danh sách.

Vì vậy, nếu đầu vào giống như l1 =[5,4,6,3,4,7] l2 =[8,6,9], thì đầu ra sẽ là [5,8,4,6,6,9, 3,4,7]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ans:=l1

  • trong khi l2 không rỗng, thực hiện

    • nếu ans không null thì

      • nếu tiếp theo của ans không phải là null, thì

        • newnode:=một nút danh sách mới có cùng giá trị l2

        • next of newnode:=next of ans

        • tiếp theo của ans:=newnode

        • ans:=next of newnode

        • l2:=tiếp theo của l2

      • nếu không,

      • tiếp theo của ans:=l2

      • đi ra từ vòng lặp

    • nếu không,


      • trả về l2


  • trả về l1

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

 Mã nguồn (Python):class ListNode:def __init __ (self, data, next =None):self.val =data self.next =nextdef make_list (Elements):head =ListNode (Elements [0]) cho phần tử trong phần tử [1:]:ptr =head while ptr.next:ptr =ptr.next ptr.next =ListNode (element) return headdef print_list (head):ptr =head print ('[', end ="") trong khi ptr:print (ptr.val, end =",") ptr =ptr.nextprint (']') class Giải pháp:def giải (self, l1, l2):ans =l1 while l2:if ans:if ans.next ! =None:newnode =ListNode (l2.val, None) newnode.next =ans.next ans.next =newnode ans =newnode.next l2 =l2.next else:ans.next =l2 break else:return l2 return l1ob =Lời giải () l1 =make_list ([5,4,6,3,4,7]) l2 =make_list ([8,6,9]) res =ob.solve (l1, l2) print_list (res)  

Đầu vào

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

Đầu ra

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