Python 中兩個連結串列元素交錯的程式


假設我們有兩個連結串列 l1 和 l2,我們需要返回一個連結串列,該連結串列透過交錯這兩個連結串列的元素來構建,並以 l1 開頭。如果任何一個連結串列還有剩餘節點,則應將其追加到列表中。

因此,如果輸入類似於 l1 = [5,4,6,3,4,7] l2 = [8,6,9],則輸出將為 [5,8,4,6,6,9,3,4,7]

為了解決這個問題,我們將遵循以下步驟 -

  • ans := l1

  • 當 l2 不為空時,執行以下操作

    • 如果 ans 不為空,則

      • 如果 ans 的下一個節點不為空,則

        • newnode := 一個具有與 l2 相同值的新連結串列節點

        • newnode 的下一個節點 := ans 的下一個節點

        • ans 的下一個節點 := newnode

        • ans := newnode 的下一個節點

        • l2 := l2 的下一個節點

      • 否則,

      • ans 的下一個節點 := l2

      • 退出迴圈

    • 否則,


      • 返回 l2


  • 返回 l1

讓我們看看下面的實現來更好地理解 -

示例

Source Code (Python):
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(']')

class Solution:
   def solve(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 l1

ob = 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, ]

更新於: 2020年10月9日

404 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告