📅  最后修改于: 2023-12-03 15:08:57.188000             🧑  作者: Mango
在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]
以上就是三种将链表转换为列表的方法,可以根据实际情况选择使用哪种方法。