如何在Python中创建链表

问题描述 投票:0回答:4

我正在尝试解决 python 中的链表编码挑战。我只给出了以下课程来创建链接列表

# Definition for singly-linked list.
class ListNode(object):
    def __init__(self, x):
        self.val = x
        self.next = None

我可以创建一个像这样的链接列表

x = ListNode(1)
x.next = ListNode(4)
x.next.next = ListNode(5)

但是,如何迭代创建(在 for 循环内)

python python-3.x linked-list singly-linked-list
4个回答
3
投票

您需要两个“指针”来记住列表的头部和尾部。磁头初始化一次。您最终将使用它来访问整个列表。每次添加另一个节点时,尾部都会发生变化:

data = [5, 1, 7, 96]
tail = head = ListNode(data[0])
for x in data[1:]:
    tail.next = ListNode(x) # Create and add another node
    tail = tail.next # Move the tail pointer

0
投票

你可以这样做:

arr = [1,4,5]
for i in arr:
    x = ListNode(i)
    x = x.next

但是现在 x 将变成

None
。由于没有其他东西可以跟踪,因此您无法打印元素。

您可以通过在循环之间打印 x.val 的值来验证这一点:

arr = [1,4,5]
for i in arr:
    x = ListNode(i)
    print(x.val)
    x = x.next

输出:

1
4
5

0
投票

您可以向构造函数添加

next
参数:

class ListNode(object):
    def __init__(self, x, next=None):
        self.x = x
        self.next = next

head = None
for x in [5, 1, 7, 96]:
    head = ListNode(x, next=head)

# Linked list looks like:
# (96) -> ( 7) -> ( 1) -> ( 5) -> None

0
投票
dummy = ListNode()  
prev = dummy
for val in arr:  
    node = ListNode(val)  
    prev.next = node  
    prev = node

dummy.next
- 是指向创建的链表

的第一个元素的链接
© www.soinside.com 2019 - 2024. All rights reserved.