Python如何测试链表相关的程序

How to test programs related to linked lists in Python

例如合并2个排序好的链表。 我理解解决问题的代码。但是,如何创建两个链表并查看输出?我对树木有同样的问题。如果我知道如何测试输入,那将非常有帮助。

输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:

如果您正在寻找测试用例:尝试这样的事情

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

l1 = ListNode(1)
l1.next = ListNode(2)
curr = l1.next
curr.next = ListNode(4)

l2 = ListNode(1)
l2.next = ListNode(3)
l2.next.next = ListNode(4)

我会把创建解决方案列表留给你。

对于使用链表测试解决方案,拥有将链表转换为列表的函数(或方法)很有帮助,反之亦然。所以定义这些:

def to_linked_list(iterable):
    head = None
    for val in reversed(iterable):
        head = ListNode(val, head)
    return head

def to_native_list(head):
    lst = []
    while head:
        lst.append(head.val)
        head = head.next
    return lst

现在您可以更轻松地测试您的解决方案:

l1 = to_linked_list([1,2,4])
l2 = to_linked_list([1,3,4])
result = Solution().mergeTwoLists(l1, l2)
print(to_native_list(result))