📌  相关文章
📜  如何在python中将链表转换为列表(1)

📅  最后修改于: 2023-12-03 15:08:57.188000             🧑  作者: Mango

如何在Python中将链表转换为列表

在Python中,链表和列表是两种不同的数据结构。有时候,我们需要将链表转换为列表,以方便对链表的操作和处理,下面就是一些方法。

方法一:使用循环遍历链表并添加到列表中

以下是一个转换链表为列表的基本算法:

# 定义链表节点类
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

# 将链表转换为列表
def list_from_linked_list(head):
    res = []
    while head:
        res.append(head.val)
        head = head.next
    return res

现在我们来测试一下:

# 测试链表转换为列表
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
head.next.next.next.next = ListNode(5)

print(list_from_linked_list(head)) # [1, 2, 3, 4, 5]
方法二:使用列表推导式

也可以使用列表推导式将链表转换成列表:

# 定义链表节点类
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
        
# 将链表转换为列表
def list_from_linked_list(head):
    return [node.val for node in iter(head)]

测试一下:

# 测试链表转换为列表
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
head.next.next.next.next = ListNode(5)

print(list_from_linked_list(head)) # [1, 2, 3, 4, 5]
方法三:使用递归

除了循环和列表推导式,也可以使用递归来将链表转换成列表:

# 定义链表节点类
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

# 将链表转换为列表
def list_from_linked_list(head):
    if not head:
        return []
    return [head.val] + list_from_linked_list(head.next)

测试一下:

# 测试链表转换为列表
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
head.next.next.next.next = ListNode(5)

print(list_from_linked_list(head)) # [1, 2, 3, 4, 5]

以上就是三种将链表转换为列表的方法,可以根据实际情况选择使用哪种方法。